[Suzaku:01941] Re: Kernel エラー

Nobuaki Sugishima email@hidden
2010年 9月 2日 (木) 20:16:54 JST


$B9B^<MM(B

$B!!BP1~$"$j$,$H$&$4$6$$$^$9!#(B

$B!!(Bprintf$BJ8$K4X$7$F$O8+Ev0c$$$J$3$H$r?=$7>e$2$F$7$^$$$^$7$?!#(B
$B!!(Bmain$B<B9TCf$K$b%I%i%$%P$O%P%C%/%0%i%s%I$GF0:n$7$F$$$k$h$&$J:x3P$r$7$F$$$^$7$?!#3d$j9~$_$r=|$1$PJB9TF0:n$H$$$&$3$H$O$"$jF@$J$$$3$H$G$7$?!#(B

$B!!(Bmain$B$H%I%i%$%P$H$N$d$j<h$j$G$9$,!"%7%9%F%`%3!<%k$r;H$&J}K!$O%I%i%$%P$N%b%8%e!<%k$r0lHL#I!?#O$H3d$j9~$_$KJ,3d$7$J$1$l$P$J$i$J$$$h$&$J$N$G!"(Bwrite$B$K(Bmain$B$+$i%I%i%$%P$X$N(BCommand$B$rDI2C$9$k$H$$$&4JJX$JJ}K!$G%H%i%$$7$F$$$^$9!#!'(B

static ssize_t my_write(struct file *filp, const char __user *buf,
    size_t count, loff_t *offp)
{
 $B!&!&!&!&!&!&(B
 if (down_interruptible(&sem)) {
  retval = -ERESTARTSYS;
  goto err1;
 }
 if (buf == NULL) {
  retval = -EFAULT;
  goto err1;
 }

 valbuf = (char *) kmalloc(sizeof(char) * 8 + 1, GFP_KERNEL); // buf size$B$O(Bprogram$BB&$G(B8bit$B$K8GDj$NLsB+(B
 strcpy(valbuf, buf);             // $B3NJ]$7$?(Bkernel buffer$B$K;XDjCM$r%3%T!<(B

 if (valbuf == NULL) {
  retval = -EFAULT;
  goto err1;
 }
 if (copy_from_user(valbuf, buf, count)) {
  retval = -EFAULT;
  goto err2;
 }

 if (dev->minor == 0) {            // Minor$B$O;HMQ$7$J$$(B
  inval = simple_strtoul(valbuf, &endp, 16);     // $BJ8;zNs$r?tCM$KJQ49(B

  if (count == OFFSET_MAN){
   __raw_writel(inval, addrMan);       // $B%O!<%I$K=PNO(B( Little Endian ) 
$B-!!!DL>o$N%O!<%I$X$N%I%i%$%P=PNO(B

  }
  else if (count == 
DEVOUT_PB0){                                                $B-"!!%I%i%$%PFb%P%C%U%!$K%G!<%?$rE>Aw(B
   memcpy(pageBuf0 + ptReadPage, &inval, sizeof(inval));
   ptRead++;
  }
  else if (count == DEVOUT_PNO){         $B!!(B                $B-#!!(B1$B2s$N(BRUN$B$K$*$1$k(Btimer$B!!(BClock$B$NAm?t(B
   regNo = inval * sizeof(unsigned long);    // clkNo x 4
  }
  else if (count == DEVOUT_BIT){         // Bit Command     $B-$!!%S%C%HC10L$N(BCommand
   printk("DEVOUT_BIT %x\n", inval);
   // RUN$B;XNa(B
   if ( inval & (1 << DEVBIT_RUN))
    runFlag = true;            // Reset$B$O%I%i%$%PCf$G9T$&(B
   // $B=i4|2=;XNa(B
   if ( inval & (1 << DEVBIT_CLR)){       // main$BB&$K$h$k6/@)=i4|2=(B
    ptRead = 0;                                $B!!(B// $email@hidden;;(Bread$B%]%$%s%?(BClear
    ptWrite = 0;                                 // $email@hidden;;J'$$=P$7%]%$%s%?(BClear
   }
  }
 $B!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&(B
err2:
 kfree(valbuf);
err1:
 up(&sem);
 return retval;
}

$B%I%i%$%P$NDL>o5!G=-!$K%I%i%$%P$@$1$KEA$($k%l%8%9%?CM-"!$-#!"%S%C%HC10L$N(BCommand$B-$$J$I$rDI2C$7$F$$$^$9!#(Bmain$BB&$OBP1~$7$?CM$r%I%i%$%P$KAw=P$7$^$9!#%3!<%I$O>JN,!#(B

$B!!$3$NAuCV$NL\E*$O%I%i%$%PB&$email@hidden$1$i$l$?%P%C%U%!#1#2#8(BKB$B$K%G!<%?$rAw$j9~$_!"%?%$%^!<%/%m%C%/$K1~$8$FFbMF$r=g<!J'$$=P$7$F$$$/$3$H$G$9!#(B

$B!!%I%i%$%PB&$email@hidden$1$i$l$?3d$j9~$_%O%s%I%i$O35MW$O0J2<$N$h$&$J$b$N$G$9!'(B

// timerClk$B3d$j9~$_%O%s%I%i(B
static irqreturn_t
timer_interrupt(int irq_timer, void *dev_id, struct pt_regs *regs)
{
 int i;
 long slvReg1[8];


 IntrStatus = __raw_readl(my_addr_isr);      // isr$B$rFI$_=P$9(B

 if (runFlag == true){                // RUN$B>uBV0J30$N3d$j9~$_$rL5;k$9$k%U%i%0(B 

  if ((ptWrite < regNo){
   for ( i = 0; i < 4; i++){
     slvReg1[i] = *(pageBuf0 + ptWrite);   // PageBuf 0 Data

    __raw_writel(slvReg1[i], addrAut);        // $BJ'=P!!%O!<%I$K=PNO(B 
$B-!!!IT0BDj(B

    ptWrite++;                                    // $email@hidden;;J'$$=P$7%]%$%s%?(BIncrement
   }
  }
  // $BJ'=P$7(B(RUN)$B=*N;!"<!$N%/%m%C%/(B
  else if (ptWrite == regNo){
   cmdDev &= ~(1 << CMDBIT_AUT);
   __raw_writel(cmdDev, addrMan);          // $B%/%m%C%/Dd;_(BCommand

   ptWrite = 0;                // Pointer Clear
   runFlag = false;            // $B0J9_$NJ'=P$r6X;_$9$k(BFlag
  }
 }
  else{
//  $B2<5-$N%@%a2!$7$,I,MW$JM}M3$OL$2rL@!#(B
  cmdDev &= ~(1 << CMDBIT_AUT);
  __raw_writel(cmdDev, addrMan);           // $B%/%m%C%/Dd;_(BCommand
 }

 __raw_writel(IntrStatus, my_addr_isr);       //$B!!(Bisr$B$r=q$-La$7(B

 return IRQ_HANDLED;
}

$B!!JdB-$G$9$,!"J'=P$7(BptWrite$B!"%P%C%U%!$X$NFI9~$_(BptRead$B$N%]%$%s%?$O%I%i%$%PB&$,4IM}!"(Bmain$BB&$O(BClear$B$9$k$3$H$,$G$-$^$9!#(B

$B!!>e5-$O#4$D$N(BLong$B%G!<%?$r(BregNo$B$KDj$a$k?t!"J'$$=P$9%W%m%0%i%`$G$9$,!"F0:n$NOHAH$_$OLdBj$"$j$^$;$s!#(B
$B=jDj$N?t(BClock$B$H%G!<%?$,=PNO$5$l!"Dd;_$7$^$9!#(B

 $BLdBj$J$N$O-!$N%9%F%C%W$G$9!#!!%O!<%I$K=PNO$9$k(B
    __raw_writel(slvReg1[i], addrAut);
$B$,Hs>o$KIT0BDj$J$N$G$9!#(B1,000$B%/%m%C%/$rD6$($k$H$3$m$G5!G=$7$J$/$J$j$^$9!#%/%m%C%/?t$OITDj$G$9!#(B
$B!!$$$C$?$sDd;_$9$k$HEE8;EjCG0J30$KI|5l$G$-$J$/$J$j$^$9!#(B

$B!!(Bmain$BB&$OL58B%k!<%W$r2s$C$F$$$^$9!#$3$NCf$KAK32MW0x$H;W$o$l$k(Bprintf$B$J$I$O$9$Y$F=|30$7$^$7$?!#$7$+$73d$j9~$_<+BN$email@hidden>o$K5!G=$7$F$$$k$N$G4X78$J$$$h$&$K;W$$$^$9!#(B

$B!!=email@hidden$O(BFPGA$B$N2sO)$J$N$GLdBj$"$k$H;W$($^$;$s!#(B

$B!!$O$K$+%R%s%H$,$"$l$P$*65$($/$@$5$$!#(B











----- Original Message ----- 
From: "mizo" <email@hidden>
To: "SUZAKU general discussion list" <email@hidden>
Sent: Tuesday, August 24, 2010 10:17 AM
Subject: [Suzaku:01922] Re: Kernel $B%(%i!<(B


> $B9B^<$G$9!#(B
>
> Nobuaki Sugishima wrote:
>> $B$=$N8eJ,$+$C$?$3$H(B
>> $B#1!%(Bmymain$B$NKAF,$G%I%i%$%PB&$KBgNL%G!<%?E>AwA0$K!"%I%i%$%PB&$K$"$k=q9~$_(B
>> $B%]%$%s%?$r%/%j%"$7$F$$$k$H$3$m$,$"$j$^$9!#$"$k%l%Y%k$r(BON$B$K$7$F#W#A#I#T$N(B
>> $B8e!"#O#F#F$K$7$F$$$k$N$G$9$,!"(Bbusy_wait(100000);$B$D$^$j%=%U%H%?%$%^!<$r(B
>> $B;H$C$F$$$^$7$?!#$3$l$G$O(BMain$BB&$,%j%=!<%9$email@hidden!"%I%i%$%P$OF0$1$^$;$s!#(B
>> $B!!=i2s$,Hf3SE*$&$^$/$$$/$N$O#i#n#s#m#o#d$N$H$-$K$3$N%]%$%s%?$r%/%j%"$7$F(B
>> $B$$$k$+$i$G$9!#$=$3$G#W#A#I#T$r#p#r#i#n#t#fJ8$KCV$-49$($?$H$3$m2~A1$,8+$i(B
>> $B$l$^$7$?!##p#r#i#n#t#fJ8$O<B9TESCf$G%3%s%H%m!<%k$r#O#S$KLa$95!G=$,$"$k$H(B
>> $B;W$&$N$G$9$,!"$3$l$O8m2r$G$7$g$&$+!)(B
>
> printf()$B$O:G=*E*$K$O%7%9%F%`%3!<%k$r8F$s$G$$$^$9!#(B
>
>> $B#2!%#c#t#r#l!]#c$K$h$j(Bmymain$B$@$1$,(BBreak$B!"%I%i%$%PB&$O!IL5=}!I$N$h$&$J:x3P$r(B 
>> 
>> $B$7$F$$$^$7$?$,!"#r#m#m#o#d$r$9$k$H!"B8:_$7$J$$NN0h$r2rJ|$7$h$&$H$7$?$H$$(B
>> $B$&%(%i!<$,$G$k$3$H$,$"$j$^$9!#B8:_$7$J$$NN0h$K=q$-9~$b$&$H$7$?$N$G$9$+$i(B
>> $B%(%i!<$K$J$k$N$OEvA3$G$9!#(B
>> $B$D$^$j(Brmmod$B$H:FEY$N#i#n#s#m#o#d$OI,?\$N$h$&$G$9!#$3$N%(%i!<I=<($N8e!"7Q(B
>> $BB3<B9T$G$-$k%1!<%9$HIT2DG=$N%1!<%9$,$"$j$=$NM}M3$O$o$+$j$^$;$s!#(B
>
> $B0U?^$7$F$$$J$$$H$3$m$GF0E*3NJ]$7$?%a%b%j$r3+J|$7$F$7$^$C$F$$$^$;$s$+!)(B
>
>> $B!!7kO@$H$7$F#m#y#m#i#n$N%=!<%9$rJQ99$9$k$?$S$K#S#U#Z#A#K#U$NEE8;:FEjF~$r(B
>> $B$9$k$N$,L5Fq$N$h$&$G$9!#(B
>>
>> $B!!$J$K$+%"%I%P%$%9$,$"$l$P$*4j$$$7$^$9!#(B
>
> $B<+:n$N%"%W%j%1!<%7%g%s$*$h$S%I%i%$%P$N$3$H$J$N$G!"%"%I%P%$%9$7Fq$$$G$9!#(B
>
> $BIT6q9g3:Ev2U=j$N%=!<%9$r8+$;$F$$$?$@$/$3$H$O2DG=$G$9$+!)%=!<%94]$4$H$G$O$J$/!"(B 
> 
> $BIT6q9g$r:F8=$G$-$k:G>.$N%=!<%9%U%!%$%k$G$"$k$H%"%I%P%$%9$7$d$9$$$G$9!#(B
>
> _______________________________________________
> suzaku mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/suzaku
> 




suzaku メーリングリストの案内