===================================

Linux/RMT Responsive Link$B$N%G%P%$%9%I%i%$%P(B

2007/FEB/19

===================================


1. $B35MW(B
===================================
$B$3$N%G%P%$%9%I%i%$%P$O(BRMT(Responsive Multithreaded Processor)$B$N(B
Responsive Link$BMQ$N(BCHAR$B7?$N%G%P%$%9%I%i%$%P$G$9!#(B


2. $B%G%P%$%9%I%i%$%P$N35MW(B
===================================

2.1 $BA4BN9=@.(B
-----------------------------------
$B0J2<$K(BResponsive Link$BMQ$N(BCHAR$B7?%G%P%$%9%I%i%$%P$NA4BN9=@.$r<($7$^$9!#(B

/dev/rlmx/0                                         
    ################                 ##########  
    #  [rl_sbuf0]  # --------------> # [FIFO] # ----> [DPM_DATA_OUT] --+
    ################          +----> ########## |    |                 |
                              |                 |>>>>|                 |
    ################          |                  |                     |
    #  [rl_rbuf0]  # <----+   |                  |Polling              |
    ################      |   |    +-------------+--+                  V
                          |   |    |   RT Thread0   |                [Link 0] <->
                          |   |    +-------------+--+                  |
/dev/rlmx/1               |   |                  |                     |
    ################      |   |                  |Polling              |
    #  [rl_sbuf1]  # ---------+                 |<<<<|                 |
    ################      |           %%%%%%%%% |    |                 |
                          |           %       % <---- [DPM_DATA_IN] <--+
    ################      +-----------%       %   
    # [rl_rbuf1]   # <----------------%%%%%%%%%   
    ################               $B%Q%1%C%H$rJ,G[(B    $B!!(B


/dev/rlmx/2
     .................


2.2 $B%Q%1%C%H7A<0(B
-----------------------------------
  $B!&%Q%1%C%H$N9=B$(B
        $B!!!!(B    31       24       16        8        0 
               0 +--------+--------+--------+--------+ 
                 |  Source Addr.   |Destination Addr.| 
               4 +--------+--------+--------+--------+ 
                 |  Source Port    |Destination Port | 
               8 +-+------+--------+--------+--------+ 
                 | | <- Packet Type(2bit)            |                      
                 | |      Sequential Number (30bit)  |             
              12 +-+---------------------------------+                
                 |   Connection Sequence Number(*)   |
              16 +-----------------------------------+
                 |                                   |
                 |             PAY LOAD              |
                 |                                   |                     
               60+--------+--------+--------+--------+ 
                 |          Control & Status         | 
                 +--------+--------+--------+--------+ 
				    *ACK$B$H%/%m!<%:%Q%1%C%H$N$_(B


  $B!&(BSource/Destination Address
    $BAw?.85(B(Source)$B$HAw?.@h(B(Destination)$B$N%M%C%H%o!<%/%"%I%l%9$r<($9!#$=$l$>(B
    $B$l!"(B12bit$B$GI=8=$5$l$F$*$j(B0$B!A(B4095$B$^$G$NCM$r@_Dj$G$-$^$9!#(B
$B!!!!;D$j$N(B8bit$B$O%k!<%F%#%s%0$N:]$NM%@hEY$rI=$7$F$*$j!"(B0$B$,0lHVDc$/(B255$B$,:GBg$H(B
    $B$J$j$^$9!#M%@hEY$O!"(B
    31                              16 15                             0 
     +----+---------------------------+----+--------------------------+
     |4bit|                           |4bit|                          |
     +----+---------------------------+----+--------------------------+
      [7-4]                            [3-0]
     $B$N$h$&$KI=8=$5$l$^$9!#(B
     $B$3$NCM$O!"%]!<%H$4$H$K@_Dj$5$l$F$*$j(Bioctl(RLMX_IOCTL_SET/GETPRIO)$B$GJQ99(B
     /$B<hF@$,2DG=$G$9!#(B

$B!!!&(BSource/Destination port                                            
    $BAw?.85$HAw?.@h$N%]!<%HHV9f$rI=$7$F$*$j!"$=$l$>$l(B0$B!A(B15$B$^$G$NCM$r<h$j$^$9!#(B

$B!!!&(BPacket Type
    $B%Q%1%C%H$N<oN`(B(Data: 0x0, ACK: 0x01, Close: 0x02, Connection: 0x03)$B$rI=(B
    $B$7$^$9!#(B

  $B!&(BSequential Number
    $BAw?.85$N%]!<%H$N@\B3$,3+;O$5$l$F$+$i$N%Q%1%C%HKh$KIU$1$i$l$?%7!<%1%s%9HV(B
    $B9f$G%Q%1%C%H$,=gHVDL$j$KE~Ce$7$F$$$k$+$N3NG'MQ$$$i$l$^$9!#(B0$B!A(B1073741823
    $B$^$G$NCM$r$H$j(B1073741823$B$^$GMh$k$H!"<!$O(B0$B$KLa$j$^$9!#(B

  $B!&(BConnection Sequence Number
    $B%/%m!<%:%Q%1%C%H!"5Z$S(BACK$B%Q%1%C%H$K@\B3@h$N@\B3%7!<%1%s%9HV9f$,E:IU$5$l(B
$B!!!!$^$9!#$3$N%7!<%1%s%9HV9f$O!"(Bioctl(RLMX_IOCTL_SET/GETDSTSEQ)$B$G@_Dj(B/$B<hF@$,(B
$B!!!!$G$-$^$9!#%G!<%?%Q%1%C%H$K$O!"$3$NNN0h$O4^$^$l$^$;$s!#(B

  $B!&(BData$B%Q%1%C%H$G$NAw?.$9$Y$-%G!<%?$,G<$a$i$l$^$9!#(B1$B%Q%1%C%H$K:GBg(B48$B%P%$%H(B
    $B$N%G!<%?$rG<$a$k$3$H$,$G$-$^$9!#$=$NB>$N%Q%1%C%H%?%$%W$G$O!"$3$NItJ,$OIT(B
    $BDj$G$9!#(B

  $B!&(BControl & Status
    $B!&(B0$B!A(B2bit: $B%Q%1%C%H$N%7%j%"%k%J%s%P!<$rI=$7$^$9$,!"K\%I%i%$%P$G$O>o$K(B0$B$G(B
               $B$9!#(B
    $B!&(B3bit: $BK\%G%P%$%9%I%i%$%P$G$O;HMQ$7$^$;$s!#(B
    $B!&(B4bit: $B$3$N%Q%1%C%H$KCWL?E*$J%(%i!<$,B8:_$9$k$H$-$O(B1,$B$=$l0J30$O(B0$B$,%;%C%H(B
            $B$5$l$^$9!#(B
    $B!&(B5bit: $BK\%G%P%$%9%I%i%$%P$G$O;HMQ$7$^$;$s!#(B
    $B!&(B6bit,7bit: $B$3$N%Q%1%C%H$,%9%?!<%H$^$?$O%(%s%I%Q%1%C%H$G$"$k$+$rI=$9%S(B
                 $B%C%H$G$9$,!"K\%G%P%$%9%I%i%$%P$G$O>o$K%;%C%H$5$l$F$$$^$9!#(B
    $B!&(B8$B!A(B23: $BK\%I%i%$%P$G$O;EMM$7$^$;$s!#(B
    $B!&(B24$B!A(B29bit:$B$3$N%Q%1%C%H$K4^$^$l$kM-8z$J%G!<%?(B+8$B$,%;%C%H$5$l$F$^$9!#(B
    $B!&(B30bit:Payload$BFb$N%G!<%?$,(B48$B%P%$%H$G$"$k>l9g%;%C%H$5$l$^$9!#(B
$B!!(B

2.3 $B%I%i%$%P$NF0:n(B
-----------------------------------
  $B!&%G%P%$%9$N%*!<%W%s(B
$B!!(B  $B!&Aw?.<u?.%P%C%U%!$N@)8fJQ?t$O=i4|2=$5$l$^$9!#Aw<u?.$N%P%C%U%!$O6u$H$_$J(B
      $B$5$l$^$9!#(B
    $B!&%7!<%1%s%9HV9f$O(B0$B$K=i4|2=$5$l$^$9!#(B
    $B!&(BANY$B%]!<%H$N@_Dj$O!"%*!<%W%s;~$K$OM-8z$K@_Dj$5$l$^$9!#!!(B
    $B!&3F%]!<%H$O0l$D$N%W%m%;%9$+$i$7$+%*!<%W%s$,$G$-$^$;$s!#(B
    $B!&%G%U%)%k%H$N@\B3@h$O<+J,<+?H$H$J$C$F$$$^$9!#(B

  $B!&%G%P%$%9$N%/%m!<%:(B
    $B!&@\B3$NAj<j$KBP$7$F%/%m!<%:%Q%1%C%H$rAw?.$7$^$9!#$=$N:]$K<+J,<+?H$N(B
      active$B%U%i%0$,%/%j%"$5$l!"%G!<%?%Q%1%C%H$NAw<u?.$r$=$l0J>e9T$o$J$$$h$&(B
      $B$K$J$j$^$9!#!!(B
    $B!&(BANY$B%]!<%H$,%;%C%H$5$l$F$$$k>l9g$K$O!"%3%s%H%m!<%k%Q%1%C%H$OAw?.$7$^$;(B
      $B$s!#(B
      
  $B!&%Q%1%C%H<u?.(B
    $B!&(B10us$B<~4|$G5/>2$5$l$k<B;~4V%9%l%C%I$,(BDPM_DATA_IN$B%P%C%U%!$+$i3F%]!<%H$N(B
      $B<u?.%P%C%U%!$K%G!<%?%Q%1%C%H$rJ,G[$7$^$9!#(B
      $BBP>]$H$J$k%]!<%H$,(BANY$B$d(Bactive$B%U%i%0$,%;%C%H$5$l$F$$$k$+$K$h$C$F!"<u?.(B
      $B;~$NF0:n$O0[$J$j$^$9!#(B
      ANY$B%]!<%H$,%;%C%H$5$l$F$$$k>l9g!'(B
        $B!&%G!<%?%Q%1%C%H$r<u?.$7$?>l9g$K$O!"<u?.%P%C%U%!$K3JG<$7$^$9!#(B
        $B!&(Bconnection$B%Q%1%C%H$r<u?.$7$?>l9g$K$O!"<u?.%P%C%U%!$K3JG<$7$^$9!#(B      
        $B!&(BACK$B$NJV?.!"5Z$S%Q%1%C%H$NAw<u?.$KH<$&%&%#%s%I%&%5%$%:$NJQ2=$O9T$$(B
         $B$^$;$s!#(B
      $B!!!&%7!<%1%s%9HV9f$N%A%'%C%/$O9T$$$^$;$s!#(B
      $B!!!&%3%s%H%m!<%k%Q%1%C%H$r<u?.$7$F$b!"(Bactive$B%U%i%0$r%/%j%"$7$^$;$s!#(B
      ANY$B%]!<%H$,%/%j%"$5$l$F$$$k>l9g!'(B
     $B!!(B $B!&<u?.$7$?%Q%1%C%H$,$=$N%]!<%H$N@\B3@h$H$O0[$J$k>l9g$K$O!"%3%s%=!<%k(B
          $B$K%(%i!<%a%C%;!<%8$H!"$I$N%]!<%H(B/$B%"%I%l%9$+$i$N%Q%1%C%H$+$r=PNO$7(B
          $B$F!"$=$N%Q%1%C%H$OGK4~$7$^$9!#(B
        $B!&%7!<%1%s%9HV9f$N%A%'%C%/$r9T$$!"HV9f$NO"B3@-$,ES@d$($k$H%3%s%=!<%k(B
          $B$K%(%i!<$,=PNO$5$l$^$9!#$=$N8e$O!"$=$N<u$1<h$C$?HV9f$+$iO"B3@-$N%A(B
          $B%'%C%/$r:F3+$7$^$9!#(B
        $B!&(BACK$B%Q%1%C%H$r<u?.$7$?:]$K$O!"%Q%1%C%H$K4^$^$l$kH/?.85$N@\B3%7!<%1(B
	  $B%s%9HV9f$H$=$N%]!<%H$N@\B3@h$N@\B3%7!<%1%s%9HV9f$,0lCW$7$J$$>l9g$K(B
	  $B$O$=$N(BACK$B%Q%1%C%H$OGK4~$5$l$^$9!#(B
        $B!&%/%m!<%:%Q%1%C%H$r<u?.$7$?>l9g$K$O!"%Q%1%C%H$K4^$^$l$kH/?.85$N@\B3(B
$B!!!!!!!!!!%7!<%1%s%9HV9f$,!"$=$N%]!<%H$N@\B3@h$N@\B3%7!<%1%s%9HV9f$H0lCW$7$J(B
$B!!!!!!!!!!$$>l9g$K$O$=$N%/%m!<%:%Q%1%C%H$OGK4~$5$l$^$9!#(B
      active$B%U%i%0$,%/%j%"$5$l$F$$$k>l9g!'(B
        $B!&A4$F$N<u?.$7$?%Q%1%C%H!J%G!<%?(B, ACK, Close and Connect)$B$O!"%P%C%U(B
	  $B%!$K3JG<$5$l$kA0$KGK4~$5$l$^$9!#(B
    $B!&%Q%1%C%H$K%(%i!<$,4^$^$l$F$$$k>l9g$d!"%]!<%HHV9f$,IT@5$JCM$G$"$k>l9g$=$N%Q%1%C(B
     $B%H$OGK4~$5$l$^$9!#(B

  $B!&(Bwrite$B%7%9%F%`%3!<%k$r;H$C$?%Q%1%C%H$NAw?.(B
    $B!&0lEY$K=q$-9~$a$k:GBg$N%5%$%:$O(B48$B%P%$%H(B(1$B%Q%1%C%H(B)$B$G$9!#(B
    $B!&(BWRITE$B$5$l$?%G!<%?$O!"3F%]!<%HKh$K3NJ]$5$l$?Aw?.MQ$N%P%C%U%!$K%3%T!<$5(B
      $B$l$k:]$K%Q%1%C%H$N7A$K@.7A$5$l!"$=$N8e(BFIFO$B$KE>Aw$5$l$^$9!#(B
    $B!&(BFIFO$BFb$N%G!<%?$O!"(B10us$B<~4|$G5/>2$9$k<B;~4V%9%l%C%I$K$h$j!"(BDPM_DATA_OUT
      $B$X$HE>Aw$5$l$^$9!#0lEY$N5/>2<~4|$GE>Aw$5$l$k:GBg$N%Q%1%C%H?t$O(B15$B%Q%1%C(B
      $B%H$G$9!#(B
    $B!&%&%#%s%I%&%5%$%:$,(B0$B$N>l9g$K$O!"6u$-$,$G$-$k$^$G%V%m%C%/$7$^$9!#(B
    $B!&(Bwrite$B;~$K(BFIFO$B$K6u$-$,L5$$>l9g$K$O!"6u$-$,$G$-$k$^$G%V%m%C%/$7$^$9!#(B
    $B!&%i%$%H%5%$%:$,(B0$B$N>l9g$K$O2?$;$:$K(B0$B$rJV$7$^$9!#(B
    $B!&(Bactive$B%U%i%0$,%/%j%"$5$l$F$$$k(B($B@\B3@h$,%/%m!<%:$7$F$$$k!K>l9g$K$O(B-1$B$r(B
      $BJV$7!"(Berrono$B$K$O(BEPIPE$B$,@_Dj$5$l$^$9!#(B

  $B!&(Bread$B%7%9%F%`%3!<%k$r;H$C$?%Q%1%C%H$NFI=P(B
    $B!&0lEY$KFI$_=P$;$k:GBg$N%5%$%:$O(B48$B%P%$%H(B(1$B%Q%1%C%H(B)$B$G$9!#(B
    $B!&(B1$B%Q%1%C%HL$K~$N%P%$%H?t$rFI$_<h$j!"$=$N%Q%1%C%H$K$O$^$@%G!<%?;D$C$F$$(B
      $B$k>l9g!"$=$N%G!<%?$OGK4~$5$l$^$9!#(B
    $B!&(Bactive$B%U%i%0$,%/%j%"(B($B@\B3@h%/%m!<%:$7$F$$$k!K$5$l$F!"$+$D<u?.%P%C%U%!(B
      $B$,6u$G$"$k>l9g$K$O!"(BRead$B$r9T$C$F$b2?$b$;$:$K(B0$B$rJV$7$^$9!#(B
    $B!&%Q%1%C%H$rFI$_<h$k$H$=$N%Q%1%C%H$KBP1~$9$k(BACK$B%Q%1%C%H$r@8@.$7!"Aw?.MQ(B
      $B$N(BFIFO$B$KE>Aw$7$^$9!#(B
    $B!&(Bactive$B%U%i%0$,%/%j%"$5$l$F$$$k>l9g$K$O!"%P%C%U%!$K<h$j9~$^$l$F$$$k%Q%1(B
      $B%C%H$K4X$7$F$ODL>oDL$jFI$_=P$7$,2DG=$G$9$,!"%P%C%U%!$,6u$G$"$k>l9g$K$O(B
      $B%V%m%C%/$;$:$K$9$0$K(B0$B$rJV$7$^$9!#(B


  $B!&(Bioctl$B%a%=%C%I(B
    $B!&(BRLMX_IOCTL_SETDST		$B%]!<%H$N@\B3@h$NJQ99(B
        $B;HMQJ}K!(B:
	    struct rlmx_ioctlport {
                    int hostid;
                    int port;
            } dstport;
            ioctl(fd, RLMX_IOCTL_SETDST, &dstport);
        $BF~NO!'(B
            dstport.hostid	$B@\B3@h$N%"%I%l%9(B(0-4095)
            dstport.port	$B@\B3@h$N%]!<%H(B(0-15)
	$B=PNO(B:        
				$BL5$7(B
	$B=i4|CM!'(B
	    $B%[%9%H(Bid		0x001
	    $B%]!<%HHV9f(B		0x0	
        $B%(%i!<%3!<%I!'(B
            EFAULT		$B%Q%i%a%?!<$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
            ENINVAL		$B%"%I%l%9$^$?$O%]!<%H$NHO0O$,%(%i!<(B
	    EPIPE		$B%]!<%H$,JD$8$i$l$F$$$^$9!#(B
	$BHw9M!'(B
	    $B!&(Bwinsize$B$,(Bmax_winsize$B$K$J$k!JAw?.$7$?A4$F$N%Q%1%C%H$N(BACK$B$,5"$C$F$-(B
$B!!!!!!!!!!(B    $B$F$$$k>uBV(B)$B$^$GBT$C$?8e$K08@h$rJQ99$7$^$9!#(B
            $B!&Aw?.%G!<%?%Q%1%C%H$H<!$K<u?.$9$k$Y$-(BACK$B$N%7!<%1%s%9HV9f$r(B0$B$K=i4|2=(B
              $B$7$^$9!#(B

    $B!&(BRLMX_IOCTL_GETDST		$B8=:_$N@\B3@h$N<hF@(B
        $B;HMQJ}K!(B:
	    struct rlmx_ioctlport {
                    int hostid;
                    int port;
            } dstport;
            ioctl(fd, RLMX_IOCTL_GETDST, &dstport);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            dstport.hostid	$B@\B3@h$N%"%I%l%9(B(0-4095)
            dstport.port	$B@\B3@h$N%]!<%H(B(0-15)
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_GETMYPORT	$B%G%P%$%9$K3d$j?6$i$l$?%]!<%HHV9f$N<hF@(B
        $B;HMQJ}K!(B:
            int myport;
            ioctl(fd, RLMX_IOCTL_GETMYPORT, &myport);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            myport		$B$3$N%G%P%$%9$K3d$j?6$i$l$?%]!<%H(B(0-15)
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_SETMYHOST	$B%"%I%l%9$NJQ99(B
        $B;HMQJ}K!(B:
            int myhostid;
            ioctl(fd, RLMX_IOCTL_SETMYHOST, &myhostid);
        $BF~NO!'(B
            myhostid		$B%"%I%l%9(B(0-4095)
	$B=PNO(B:
				$BL5$7(B        
	$B=i4|CM!'(B
				0x001
        $B%(%i!<%3!<%I!'(B
            EFAULT		$B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
$B!!!!(B	    $B%[%9%H$N%"%I%l%9$@$1$G$O$J$/!"F1;~$K%k!<%F%#%s%0%F!<%V%k$bJT=8(B
	    $B$9$kI,MW$,$"$j$^$9!#(B


    $B!&(BRLMX_IOCTL_GETMYHOST	$B%"%I%l%9$N<hF@(B
        $B;HMQJ}K!(B:
            int myhostid;
            ioctl(fd, RLMX_IOCTL_GETMYHOST, &myhostid);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            myhostid		$B%"%I%l%9(B(0-4095)
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B


    $B!&(BRLMX_IOCTL_SETWINSIZE	$BAw?.MQ$N%&%#%s%I%&%5%$%:$NJQ99(B
        $B;HMQJ}K!(B:
            int winsize;
            ioctl(fd, RLMX_IOCTL_SETWINSIZE, &winsize);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            winsize		$B%&%#%s%I%&%5%$%:(B(1-$BAw?.%P%C%U%!$N%5%$%:(B)
				$BC10L$O%Q%1%C%H(B
	$B=i4|CM!'(B
				0x0004
        $B%(%i!<%3!<%I!'(B
            EFAULT		$B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
	    EBUSY		$BA4$F$N(BACK$B$,JVAw$5$l$F$$$J$$!#(B
	$BHw9M!'(B
            $B!&%&%#%s%I%&%5%$%:$NJQ99$O(Bwinsize$B$,(Bmax_winsize$B$K$J$C$F$$$k;~(B
$B!!!!!!!!!!!!!JAw?.$7$?A4$F$N%Q%1%C%H$N(BACK$B$,5"$C$F$-$F$$$k>uBV(B)$B$N$_JQ99$,(B
$B!!!!!!!!!!!!(B $B2DG=$G$9!#(B
	    $B!&%&%#%s%I%&%5%$%:$O%U%!%$%k$r%/%m!<%:$7$F$bJQ$o$j$^$;$s!#(B

    $B!&(BRLMX_IOCTL_GETWINSIZE	$B8=:_$NAw?.MQ$N%&%#%s%I%&%5%$%:$N<hF@(B
        $B;HMQJ}K!(B:
            int winsize;
            ioctl(fd, RLMX_IOCTL_GETWINSIZE, &myhostid);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            winsize		$B8=:_$N%&%#%s%I%&%5%$%:(B
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_SETSNDSIZE	$BAw?.%P%C%U%!$N%5%$%:$NJQ99(B
        $B;HMQJ}K!(B:
            int sbuf_size;
            ioctl(fd, RLMX_IOCTL_SETSNDSIZE, &sbuf_size);
        $BF~NO!'(B
            sbuf_size		$BAw?.%P%C%U%!$N%5%$%:(B
$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(B($BAw?.MQ%&%#%s%I%&%5%$%:(B-65535)
				$BC10L$O%Q%1%C%H(B
	$B=PNO(B:        
				$BL5$7(B
	$B=i4|CM!'(B
				0x0020
        $B%(%i!<%3!<%I!'(B
            EFAULT		$B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
	    EBUSY		$BAw?.%P%C%U%!$,6u$G$OL5$$!#(B
	$BHw9M!'(B
	    $B!&%&%#%s%I%&%5%$%:$NJQ99$O(Bwinsize$B$,(Bmax_winsize$B$K$J$C$F$$$k;~(B
$B!!!!!!!!!!!!!JAw?.$7$?A4$F$N%Q%1%C%H$N(BACK$B$,5"$C$F$-$F$$$k>uBV(B)$B$N$_JQ99$,(B
$B!!!!!!!!!!!!(B $B2DG=$G$9!#(B
	    $B!&Aw?.%P%C%U%!%5%$%:$O%U%!%$%k$r%/%m!<%:$7$F$bJQ$o$j$^$;$s!#(B

    $B!&(BRLMX_IOCTL_GETSNDSIZE	$B8=:_$NAw?.%P%C%U%!$N<hF@(B
        $B;HMQJ}K!(B:
            int sbuf_size;
            ioctl(fd, RLMX_IOCTL_GETSNDSIZE, &sbuf_size);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            sbuf_size		$B8=:_$NAw?.%P%C%U%!$N%5%$%:(B
				$BC10L$O%Q%1%C%H(B
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_SETRCVSIZE	$B<u?.%P%C%U%!$N%5%$%:$NJQ99(B
        $B;HMQJ}K!(B:
            int sbuf_size;
            ioctl(fd, RLMX_IOCTL_SETRCVSIZE, &sbuf_size);
        $BF~NO!'(B
            sbuf_size		$B<u?.%P%C%U%!$N%5%$%:(B
$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(B(1-65535)
				$BC10L$O%Q%1%C%H(B
	$B=PNO(B:        
				$BL5$7(B
	$B=i4|CM!'(B
				0x0020
        $B%(%i!<%3!<%I!'(B
            EFAULT		$B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
	    EBUSY		$B<u?.%P%C%U%!$,6u$G$OL5$$!#(B
	$BHw9M!'(B
	    $B!&<u?.%P%C%U%!$K$OCf$KF~$C$F$$$k%G!<%?%+%&%s%H$,(B0$B$G$"$k>l9g$N$_(B
$B!!!!!!!!!!!!!!%5%$%:$NJQ99$,2DG=$G$9!#(B
	    $B!&<u?.%P%C%U%!%5%$%:$O%U%!%$%k$r%/%m!<%:$7$F$bJQ$o$j$^$;$s!#(B

    $B!&(BRLMX_IOCTL_GETRCVSIZE	$B8=:_$N<u?.%P%C%U%!$N<hF@(B
        $B;HMQJ}K!(B:
            int sbuf_size;
            ioctl(fd, RLMX_IOCTL_GETRCVSIZE, &sbuf_size);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            sbuf_size		$B8=:_$N<u?.%P%C%U%!$N%5%$%:(B
				$BC10L$O%Q%1%C%H(B
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_SETANYFLAG	ANY$B%]!<%H$N@_Dj(B
        $B;HMQJ}K!(B:
            int angflag;
            ioctl(fd, RLMX_IOCTL_SETANYFLAG, &anyflag);
        $BF~NO!'(B
            anyflag		ANY$B%]!<%H$N@_Dj(B(0:$BL58z(B, !0:$BM-8z(B)
	$B=PNO(B:        
				$BL5$7(B
	$B=i4|CM!'(B
				0x1
        $B%(%i!<%3!<%I!'(B
            EFAULT		$B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_GETANYFLAG	$B8=:_$N(BANY$B%]!<%H$N@_Dj$N<hF@(B
        $B;HMQJ}K!(B:
            int angflag;
            ioctl(fd, RLMX_IOCTL_GETANYFLAG, &anyflag);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            anyflag		$B8=:_$N(BANY$B%]!<%H$N@_Dj(B(0:$BL58z(B, !0:$BM-8z(B)
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
            $B!&(BANY$B%]!<%H$+$iDL>o%]!<%H$K0\9T$9$k:]$K$O!"<u?.%P%C%U%!$K4^$^$l(B
	      $B$k%Q%1%C%H$NFb!"8=:_$N@\B3@h$H$O0[$J$k%]!<%H$+$iMh$?%Q%1%C%H(B
	      $B$H@\B33NN)$N$?$a$N%Q%1%C%H$OA4$FGK4~$5$l$^$9!#(B
	    

    $B!&(BRLMX_IOCTL_SETROOTBUFSIZE	$BAw?.MQ(BFIFO$B%P%C%U%!$N%5%$%:$NJQ99(B
        $B;HMQJ}K!(B:
            int fifo_size;
            ioctl(fd, RLMX_IOCTL_SETROOTBUFSIZE, &fifo);
        $BF~NO!'(B
            sbuf_size		FIFO$B%5%$%:$r(B2$B$N2?>h$K$9$k$+$r;XDj(B(7-31)
	$B=PNO(B:        
				$BL5$7(B
	$B=i4|CM!'(B
				0x0D
	$B%(%i!<%3!<%I!'(B
            ENINVAL             $B%Q%i%a!<%?$NCM0h$,IT@5(B
            ENOMEM              $B%a%b%j$,3NJ]$G$-$J$+$C$?>l9g(B
            EBUSY               FIFO$BFb$K%G!<%?$,;D$C$F$$$?>l9g(B
            EFAULT		$B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_GETROOTBUFSIZE $BAw?.MQ(BFIFO$B%P%C%U%!$N%5%$%:$N<hF@(B
        $B;HMQJ}K!(B:
            int fifo_size;
            ioctl(fd, RLMX_IOCTL_SETROOTBUFSIZE, &fifo_size);
        $BF~NO!'(B
				$BL5$7(B
	$B=PNO(B:        
            fifo_size		FIFO$B%5%$%:$,(B2$B$N2?>h$G$"$k$+(B
        $B%(%i!<%3!<%I!'(B
            EFAULT		$BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
	$BHw9M!'(B
				$BL5$7(B

    $B!&(BRLMX_IOCTL_SETPRIO        $B%W%i%$%*%j%F%#!<$N@_Dj(B
        $B;HMQJ}K!(B:
            int prio;
            ioctl(fd, RLMX_IOCTL_SETPRIO, &prio);
        $BF~NO!'(B
            sbuf_size           $BAw?.$9$k%Q%1%C%H$N%W%i%$%*%j%F%#!<(B
$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(B(0-255)
        $B=PNO(B:
                                $BL5$7(B
        $B=i4|CM!'(B
                                0x0000
        $B%(%i!<%3!<%I!'(B
            EFAULT              $B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
            EINVAL              $B%Q%i%a!<%?$NHO0O30(B
        $BHw9M!'(B
                                $BL5$7(B

    $B!&(BRLMX_IOCTL_GETPRIO       $B%W%i%$%*%j%F%#!<$N@_Dj(B
        $B;HMQJ}K!(B:
            int prio;
            ioctl(fd, RLMX_IOCTL_GETPRIO, &prio);
        $BF~NO!'(B
                                $BL5$7(B
        $B=PNO(B:
            sbuf_size           $BAw?.$9$k%Q%1%C%H$N%W%i%$%*%j%F%#!<(B
$B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(B(0-255)
        $B=i4|CM!'(B
                                0x00
        $B%(%i!<%3!<%I!'(B
            EFAULT              $BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
        $BHw9M!'(B
                                $BL5$7(B

    $B!&(BRLMX_IOCTL_GETCONSEQ      $B%]!<%H$N@\B3%7!<%1%s%9HV9f$r%$%s%/%j%a%s%H$7(B
                                $B$F<hF@$9$k!#(B
        $B;HMQJ}K!(B:
            int conseq;
            ioctl(fd, RLMX_IOCTL_GETCONSEQ, &conseq);
        $BF~NO!'(B
                                $BL5$7(B
        $B=PNO(B:
            conseq              $B%$%s%/%j%a%s%H$5$l$?%]!<%H$N@\B3%7!<%1%s%9HV9f(B
        $B=i4|CM!'(B
                                0x00000001
        $B%(%i!<%3!<%I!'(B
            EFAULT              $BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
        $BHw9M!'(B
                                $B@\B3%7!<%1%s%9HV9f$O%]!<%H$r%/%m!<%:$7$F$bCM(B
				$B$OJ];}$5$l$^$9!#(B
				
    $B!&(BRLMX_IOCTL_SETDSTSEQ      $B@\B3@h$N@\B3%7!<%1%s%9HV9f$r@_Dj(B
        $B;HMQJ}K!(B:
            int peerseq;
            ioctl(fd, RLMX_IOCTL_SETDSTSEQ, &peerseq);
        $BF~NO!'(B
            peerseq		$B@\B3@h$N@\B3%7!<%1%s%9HV9f(B
        $B=PNO(B:
                                $BL5$7(B
        $B=i4|CM!'(B
                                0x00000000
        $B%(%i!<%3!<%I!'(B
            EFAULT              $B%Q%i%a!<%?$,3JG<$5$l$F$$$k%"%I%l%9$N%(%i!<(B
        $BHw9M!'(B
                                $BL5$7(B

    $B!&(BRLMX_IOCTL_GETDSTSEQ      $B@\B3@h$N@\B3%7!<%1%s%9HV9f$r<hF@(B
        $B;HMQJ}K!(B:
            int peerseq;
            ioctl(fd, RLMX_IOCTL_GETDSTSEQ, &peerseq);
        $BF~NO!'(B
				$BL5$7(B
        $B=PNO(B:
                                $B@_Dj$5$l$?@\B3@h$N@\B3%7!<%1%s%9HV9f(B
        $B=i4|CM!'(B
                                0x00000000
        $B%(%i!<%3!<%I!'(B
            EFAULT              $BLa$jCM$r=PNO$9$k%"%I%l%9$N%(%i!<(B
        $BHw9M!'(B
                                $BL5$7(B

2.4 $B%k!<%F%#%s%0%F!<%V%k$NJT=8(B
-----------------------------------
  $B!&(BResponsive Link$B$N%k!<%F%#%s%0%F!<%V%k$NFbMF$rJQ99$9$k$K$O!"%l%8%9%?$N%k(B
    $B!<%F%#%s%0%F!<%V%kItJ,(B(0xFFFE2000:$B%"%I%l%9It(B, 0xFFFE3000:$B%j%s%/It(B)$B$r!"(B
    mmap$B$9$k$3$H$G%"%/%;%9$9$kI,MW$,$"$j$^$9!#(B
    $B$?$@$7!"(B/dev/mem$B$r(Bmmap$B$7$F%k!<%F%#%s%0%F!<%V%k$r%a%b%j%^%C%W$9$k:]$K$O!"(B
    $B%*%U%;%C%H(B0x80000000$B$r%^%C%WBP>]$N%"%I%l%9$+$i0z$/I,MW$,$"$j$^$9!#(B

    $B$^$?!"%F!<%V%k$X$O(BResponsive Link$B$b%"%/%;%9$7$^$9!#$=$N$?$a!"%k!<%F%#%s(B
    $B%0%F!<%V%k$NJQ99$r9T$&$?$a$K$O!"%P%9$N%"%/%;%98"8B$r<hF@$9$kI,MW$,$"$j$^(B
    $B$9!#(B

    ex)$B%k!<%F%#%s%0%F!<%V%k$N%"%I%l%9It$r(Bmmap$B$rMQ$$$F%^%C%T%s%0!#(B 
      mapped = mmap(0, len, PROT_READ | PROT_WRITE,
                                MAP_SHARED, fp, 0xfffe2000 - 0x80000000);

    ex)$B%k!<%F%#%s%0%F!<%V%k$N%"%/%;%98"8B$r<hF@(B/$B2rJ|$9$kNc(B
        mapped = mmap(0, 0x50, 
                      PROT_READ | PROT_WRITE, 
                      MAP_SHARED, fd, 
                      0xfffe0000 - 0x80000000);// offset 0x80000000 
                      
        /* Table Bus Request */$B!!(B
        *((volatile unsigned long *)
          (mapped + 0xfffe0028 - 0xfffe0000)) = 0x0000000;
        /* Polling Table Bus Arbitor */
        do {
                flag = *((volatile unsigned long *)
                         (mapped + (0xfffe002c - 0xfffe0000)));
                flag >>= 31;
        } while ( flag != 0x0 );
        
	/* Table Bus Release*/  
        *((volatile unsigned long *)
          (mapped + 0xfffe0028 - 0xfffe0000)) = 0x0000001;

2.5 $B%9%F!<%?%9>pJs$N=PNO(B
-----------------------------------
/proc/rlmx_stat$B$N=PNO$K$h$C$F!"8=:_$N%I%i%$%P$N%9%F!<%?%9$r3NG'$9$k$3$H$,$G(B
$B$-$^$9!#(B
$B0J2<$O!"(B/proc/rlmx_stat$B$NFbMF$r=PNO$7$?$b$N$G$9!#(B

 # cat /proc/rlmx_stat
cat /proc/rlmx_stat
hostid = 0x001
FIFO size for DPM_OUT : 8192byte(usage: 0byte)
Number of Packet has Illegal destination port :        0
Number of Packet has fatal error :        0
PORT:O A PHOST  PPORT SNDBUF WINSIZ MAXWIN SEND_PCKT NXTSNDSEQ RXVBUF LEFTPK RECV_PCKT NXTRCVSEQ UNEXPECT  BUF_FULL  PKT_ORD   ACK_ORD   PKT_TYPE 
   0:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   1:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   2:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   3:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   4:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   5:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   6:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   7:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   8:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
   9:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
  10:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
  11:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
  12:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
  13:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
  14:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0
  15:0 0 0x0001  0000     32      4      4         0         0     32      0         0         0         0        0         0         0         0

$B$^$:!":G=i$K$3$N%[%9%H$N%"%I%l%9!"(BDPM_DATA_OUT$BMQ$N(BFIFO$B$N%5%$%:$H$=$N;HMQNL!"(B
$B$3$N%[%9%H$G<u?.$7$?(B0$B!A(B15$B0J30$N%]!<%HHV9f$r08@h$K$b$C$?IT@5$J%Q%1%C%H$N8D?t!"(B
$BDL?.Cf$KGKB;$7$?0Y$KGK4~$5$l$?%Q%1%C%H$N?t$,I=<($5$l$^$9!#(B
	
$B$=$N8e$K=PNO$5$l$F$$$k$N$O!"3F%]!<%HKh$N%9%F!<%?%9$G$9!#=PNO$5$l$k>pJs$O!":8(B
$BB&$+$i$=$l$>$l!"(B
  $B!&%]!<%HHV9f(B
  $B!&%*!<%W%s(B(0: $B%/%m!<%:(B, 1:$B%*!<%W%s(B)
  $B!&@\B3$N3NN)(B(0: $B@\B3$,$7$F$$$J$$(B, 1: $B@\B3$5$l$F$$$k(B)
  $B!&@\B3@h%[%9%H(B
  $B!&@\B3@h%]!<%H(B
  $B!&Aw?.%P%C%U%!$N%5%$%:(B
  $B!&Aw?.%&%#%s%I%&$N%5%$%:(B
  $B!&Aw?.%&%#%s%I%&$N:GBg%5%$%:(B
  $B!&%7%9%F%`$,5/F0$7$F$+$iAw?.$7$?%Q%1%C%H?t(B
  $B!&<!$NAw?.%Q%1%C%H$N%7!<%1%s%9HV9f(B
  $B!&<u?.%P%C%U%!$N%5%$%:(B
  $B!&<u?.%P%C%U%!Fb$K;D$C$F$$$k%Q%1%C%H?t(B
  $B!&%7%9%F%`$,5/F0$7$F$+$i<u?.$7$?%Q%1%C%H?t(B
  $B!&<!$N%Q%1%C%H$K<u$1<h$k$HA[Dj$7$F$$$k%Q%1%C%H$N%7!<%1%s%9HV9f(B
  $B!&%(%i!<%+%&%s%H(B
        $B!&@\B3@h0J30$+$i<u$1<h$C$?%Q%1%C%H?t(B
        $B!&%P%C%U%!$,0n$l$F$$$k$?$a<h$j$3$\$7$?%Q%1%C%H?t(B
        $B!&%G!<%?%Q%1%C%H$N%7!<%1%s%9HV9f$,ITO"B3$G$"$C$?2s?t(B
        $B!&(BACK$B%Q%1%C%H$N%7!<%1%s%9HV9f$,ITO"B3$G$"$C$?2s?t(B
        $B!&Dj5A$5$l$F$$$J$$%Q%1%C%H%?%$%W$r;}$C$?%Q%1%C%H?t(B
$B$H$J$C$F$$$^$9!#(B
