XINU
|
関数のプロトタイプ宣言を集約したヘッダ More...
Go to the source code of this file.
Macros | |
#define | htonl(x) |
#define | htons(x) ((0xff & ((x) >> 8)) | ((0xff & (x)) << 8)) |
#define | ntohl(x) |
#define | ntohs(x) ((0xff & ((x) >> 8)) | ((0xff & (x)) << 8)) |
Functions | |
void | _mkinit (void) |
void | _ptclear (struct ptentry *, uint16, int32(*)(int32)) |
ポートを用いたメッセージと待機中プロセスを解放する。 More... | |
status | addargs (pid32, int32, int32[], int32, char *, void *) |
XINUシェルが作成したコマンドプロセスのスタックに引数argv(任意個)のローカルコピーを追加する。 More... | |
int32 | am335x_eth_init (struct ethcblk *) |
int32 | arp_alloc (void) |
void | arp_hton (struct arppacket *) |
void | arp_in (struct arppacket *) |
void | arp_init (void) |
void | arp_ntoh (struct arppacket *) |
status | arp_resolve (uint32, byte[]) |
status | ascdate (uint32, char *) |
status | bufinit (void) |
バッファプールデータ構造を初期化する。 More... | |
pri16 | chprio (pid32, pri16) |
プロセスのスケジューリング優先度を変更する。 More... | |
uint32 | clkcount (void) |
interrupt | clkhandler (void) |
void | clkinit (void) |
void | clkint (void) |
syscall | close (did32) |
syscall | control (did32, int32, int32, int32) |
pid32 | create (void *, uint32, pri16, char *, uint32,...) |
関数の実行を開始するプロセスを作成する。 More... | |
void | ctxsw (void *, void *) |
コンテキストスイッチを行う(ctxsw.S に定義がある) More... | |
pid32 | dequeue (qid16) |
プロセスキューテーブルからキューを削除し、リスト先頭のプロセスIDを返す。 More... | |
intmask | disable (void) |
割り込み禁止(intr.Sに定義がある) More... | |
uint32 | dnslookup (char *) |
uint32 | dot2ip (char *, uint32 *) |
void | enable (void) |
割り込み許可(intr.Sに定義がある) More... | |
pid32 | enqueue (pid32, qid16) |
プロセスをプロセスキューテーブルの末尾に挿入する。 More... | |
void | eth_hton (struct netpacket *) |
void | eth_ntoh (struct netpacket *) |
int32 | ethcontrol (struct dentry *, int32, int32, int32) |
interrupt | ethhandler (uint32) |
int32 | ethinit (struct dentry *) |
int32 | ethread (struct dentry *, void *, uint32) |
int32 | ethwrite (struct dentry *, void *, uint32) |
void | exception (int32, int32 *) |
syscall | freebuf (char *) |
バッファプールから取得したバッファを解放する。 More... | |
syscall | freemem (char *, uint32) |
メモリブロックを解放し、ブロックを空きリストに戻す。 More... | |
char * | getbuf (bpid32) |
事前に確保されたバッファプールからバッファを取得する。 More... | |
syscall | getc (did32) |
pid32 | getfirst (qid16) |
キューの先頭からプロセスを取り出す。 More... | |
pid32 | getitem (pid32) |
キューの任意の位置からプロセスを取り出す。 More... | |
pid32 | getlast (qid16) |
キューの末尾からプロセスを取り出す。 More... | |
uint32 | getlocalip (void) |
char * | getmem (uint32) |
ヒープ領域を割り当て、最下位のワードアドレスを返す。 More... | |
pid32 | getpid (void) |
現在実行中のプロセスIDを返す。 More... | |
uint16 | getport (void) |
syscall | getprio (pid32) |
プロセスのスケジューリング優先度を取得する。 More... | |
char * | getstk (uint32) |
スタックメモリを割り当て、最上位のワードアドレスを返す。 More... | |
uint32 | getticks (void) |
CPUリセット以降のclock tick数を取得する。 More... | |
status | gettime (uint32 *) |
1970年1月1日からの経過時間(秒単位)にロケーション(時差)を反映した時間を返す。 More... | |
status | getutime (uint32 *) |
devcall | gpiocontrol (struct dentry *, int32, int32, int32) |
void | gpiohandler (uint32) |
devcall | gpioinit (struct dentry *) |
devcall | gpioread (struct dentry *, char *, int32) |
devcall | gpioselect (uint32, uint32, uint32) |
devcall | gpiowrite (struct dentry *, char *, int32) |
void | halt (void) |
システムを停止させる(intr.Sに定義がある) More... | |
uint16 | icmp_cksum (char *, int32) |
void | icmp_hton (struct netpacket *) |
void | icmp_in (struct netpacket *) |
void | icmp_init (void) |
struct netpacket * | icmp_mkpkt (uint32, uint16, uint16, uint16, char *, int32) |
void | icmp_ntoh (struct netpacket *) |
int32 | icmp_recv (int32, char *, int32, uint32) |
int32 | icmp_register (uint32) |
status | icmp_release (int32) |
status | icmp_send (uint32, uint16, uint16, uint16, char *, int32) |
int32 | inb (int32) |
syscall | init (did32) |
デバイスとデバイスドライバを初期化する。 More... | |
int32 | initevec (void) |
int32 | initintc (void) |
int32 | inl (int32) |
status | insert (pid32, qid16, int32) |
優先度に基づいて、キューにプロセスを挿入する。 More... | |
status | insertd (pid32, qid16, int32) |
int32 | insw (int32, int32, int32) |
int32 | inw (int32) |
devcall | ioerr (void) |
ステータスとしてエラーを返す(デバイステーブルの"error"エントリに対して使用する)。 More... | |
devcall | ionull (void) |
何もしない(デバイステーブルの"don't care"エントリに使用する) More... | |
status | ip_enqueue (struct netpacket *) |
void | ip_hton (struct netpacket *) |
void | ip_in (struct netpacket *) |
void | ip_local (struct netpacket *) |
void | ip_ntoh (struct netpacket *) |
status | ip_out (struct netpacket *) |
int32 | ip_route (uint32) |
status | ip_send (struct netpacket *) |
uint16 | ipcksum (struct netpacket *) |
process | ipout (void) |
syscall | kill (pid32) |
指定のプロセスを終了させ、システムから終了させたプロセス情報を取り除く。 More... | |
int32 | lexan (char *, int32, char *, int32 *, int32[], int32[]) |
dbid32 | lfdballoc (struct lfdbfree *) |
status | lfdbfree (did32, dbid32) |
status | lfflush (struct lflcblk *) |
int32 | lfgetmode (char *) |
ibid32 | lfiballoc (void) |
void | lfibclear (struct lfiblk *, int32) |
void | lfibget (did32, ibid32, struct lfiblk *) |
status | lfibput (did32, ibid32, struct lfiblk *) |
devcall | lflclose (struct dentry *) |
devcall | lflcontrol (struct dentry *, int32, int32, int32) |
devcall | lflgetc (struct dentry *) |
devcall | lflinit (struct dentry *) |
devcall | lflputc (struct dentry *, char) |
devcall | lflread (struct dentry *, char *, int32) |
devcall | lflseek (struct dentry *, uint32) |
devcall | lflwrite (struct dentry *, char *, int32) |
status | lfscheck (struct lfdir *) |
status | lfscreate (did32, ibid32, uint32) |
status | lfsetup (struct lflcblk *) |
devcall | lfsinit (struct dentry *) |
devcall | lfsopen (struct dentry *, char *, char *) |
status | lftruncate (struct lflcblk *) |
devcall | lpgetc (struct dentry *) |
devcall | lpinit (struct dentry *) |
devcall | lpopen (struct dentry *, char *, char *) |
devcall | lpputc (struct dentry *, char) |
devcall | lpread (struct dentry *, char *, int32) |
devcall | lpwrite (struct dentry *, char *, int32) |
int32 * | memcmp (void *, const void *, int32) |
void * | memcpy (void *, const void *, int32) |
メモリAの領域(source)からメモリBの領域(Destination)にN Byteコピーする。 More... | |
void * | memset (void *, const int, int32) |
指定のByteブロックに対して、同じ値をNバイト分書き込む。 More... | |
bpid32 | mkbufpool (int32, int32) |
バッファプール用のメモリを割り当て、バッファ同士をリンクする。 More... | |
syscall | mount (char *, char *, did32) |
status | namcpy (char *, char *, int32) |
status | naminit (void) |
int32 | namlen (char *, int32) |
devcall | nammap (char *, char[], did32) |
devcall | namopen (struct dentry *, char *, char *) |
did32 | namrepl (char *, char[]) |
void | net_init (void) |
process | netin (void) |
process | netout (void) |
qid16 | newqueue (void) |
グローバルキューテーブルにキューを割り当て、テーブルを初期化する。 More... | |
syscall | open (did32, char *, char *) |
int32 | outb (int32, int32) |
int32 | outl (int32, int32) |
int32 | outsw (int32, int32, int32) |
int32 | outw (int32, int32) |
void | panic (char *) |
Panic状態に陥った旨のメッセージを表示し、全てのプロセスを停止させる。 More... | |
int32 | pci_init (void) |
void | pdump (struct netpacket *) |
void | pdumph (struct netpacket *) |
void | platinit (void) |
int32 | ptcount (int32) |
ポートを用いたメッセージ送受信において、メッセージ数を数える。 More... | |
syscall | ptcreate (int32) |
未処理のメッセージを「カウント」できるポートを作成する。 More... | |
syscall | ptdelete (int32, int32(*)(int32)) |
ポートを削除し、待機中のプロセスとメッセージを解放する。 More... | |
syscall | ptinit (int32) |
全てのポートを初期化する。 More... | |
uint32 | ptrecv (int32) |
ポートからメッセージを受信する。受信前にメッセージが空の場合はブロッキングする。 More... | |
syscall | ptreset (int32, int32(*)(int32)) |
ポートをリセットを行う。 More... | |
syscall | ptsend (int32, umsg32) |
メッセージをキューに追加する事によってポートへメッセージを送信する。 More... | |
syscall | putc (did32, char) |
デバイスへ文字1Byteを送信する。 More... | |
devcall | ramclose (struct dentry *) |
devcall | raminit (struct dentry *) |
devcall | ramopen (struct dentry *, char *, char *) |
devcall | ramread (struct dentry *, char *, int32) |
devcall | ramwrite (struct dentry *, char *, int32) |
process | rawin (void) |
struct rdbuff * | rdsbufalloc (struct rdscblk *) |
devcall | rdsclose (struct dentry *) |
status | rdscomm (struct rd_msg_hdr *, int32, struct rd_msg_hdr *, int32, struct rdscblk *) |
devcall | rdscontrol (struct dentry *, int32, int32, int32) |
devcall | rdsinit (struct dentry *) |
devcall | rdsopen (struct dentry *, char *, char *) |
void | rdsprocess (struct rdscblk *) |
devcall | rdsread (struct dentry *, char *, int32) |
devcall | rdswrite (struct dentry *, char *, int32) |
syscall | read (did32, char *, uint32) |
status | ready (pid32) |
プロセスをCPUサービスの対象にする。 More... | |
umsg32 | receive (void) |
メッセージの受信を待ち、受信後にreceive()の呼び出し者にメッセージを返す。 More... | |
umsg32 | recvclr (void) |
受信メッセージをクリアし、待機している場合はメッセージを返す。 More... | |
umsg32 | recvtime (int32) |
void | resched (void) |
最優先の適切なプロセスにCPU実行権を渡す。 More... | |
status | resched_cntl (int32) |
再スケジューリングを延期させるか、もしくは許可させるかを制御する。 More... | |
void | restore (intmask) |
pri16 | resume (pid32) |
プロセスを休止状態(サスペンド)からREADY状態に遷移させる。 More... | |
devcall | rflclose (struct dentry *) |
devcall | rflgetc (struct dentry *) |
devcall | rflinit (struct dentry *) |
devcall | rflputc (struct dentry *, char) |
devcall | rflread (struct dentry *, char *, int32) |
devcall | rflseek (struct dentry *, uint32) |
devcall | rflwrite (struct dentry *, char *, int32) |
int32 | rfscomm (struct rf_msg_hdr *, int32, struct rf_msg_hdr *, int32) |
devcall | rfscontrol (struct dentry *, int32, int32, int32) |
int32 | rfsgetmode (char *) |
devcall | rfsinit (struct dentry *) |
status | rfsndmsg (uint16, char *) |
devcall | rfsopen (struct dentry *devptr, char *, char *) |
syscall | seek (did32, uint32) |
syscall | semcount (sid32) |
セマフォのカウント値を返す。 More... | |
sid32 | semcreate (int32) |
未使用セマフォを割り当て、そのセマフォへのインデックス(セマフォID)を返す。 More... | |
syscall | semdelete (sid32) |
セマフォテーブルエントリを解放し、セマフォを削除する。 More... | |
syscall | semreset (sid32, int32) |
セマフォカウントをリセットし、待機中のプロセスを全て解放する。 More... | |
syscall | send (pid32, umsg32) |
プロセスにメッセージを送信し、受信側が待機状態の場合はREADY状態にする。 More... | |
int32 | set_evec (uint32, uint32) |
process | shell (did32) |
syscall | signal (sid32) |
セマフォにシグナルを送り、待機プロセスがある場合は解除する。 More... | |
syscall | signaln (sid32, int32) |
セマフォにシグナルをN回送り、N個の待機プロセスがある場合はそれらをREADY状態にする。 More... | |
syscall | sleep (int32) |
syscall | sleepms (int32) |
devcall | spicontrol (struct dentry *, int32, int32, int32) |
int32 | spiinit (struct dentry *) |
syscall | suspend (pid32) |
プロセスを一時停止し、休止状態(サスペンド)に遷移させる。 More... | |
void | trap (int32) |
devcall | ttycontrol (struct dentry *, int32, int32, int32) |
devcall | ttygetc (struct dentry *) |
void | ttyhandle_in (struct ttycblk *, struct uart_csreg *) |
void | ttyhandle_out (struct ttycblk *, struct uart_csreg *) |
void | ttyhandler (uint32) |
devcall | ttyinit (struct dentry *) |
void | ttykickout (struct uart_csreg *) |
devcall | ttyputc (struct dentry *, char) |
devcall | ttyread (struct dentry *, char *, int32) |
devcall | ttywrite (struct dentry *, char *, int32) |
void | udp_hton (struct netpacket *) |
void | udp_in (struct netpacket *) |
void | udp_init (void) |
void | udp_ntoh (struct netpacket *) |
int32 | udp_recv (uid32, char *, int32, uint32) |
int32 | udp_recvaddr (uid32, uint32 *, uint16 *, char *, int32, uint32) |
uid32 | udp_register (uint32, uint16, uint16) |
status | udp_release (uid32) |
status | udp_send (uid32, char *, int32) |
status | udp_sendto (uid32, uint32, uint16, char *, int32) |
syscall | unsleep (pid32) |
void | userret (void) |
プロセスが最上位の関数に戻る時に呼ばれる。現在のプロセスを終了させる。 More... | |
syscall | wait (sid32) |
void | wakeup (void) |
syscall | write (did32, char *, uint32) |
void | xdone (void) |
最終プロセスの終了時、システム終了メッセージを表示する。 More... | |
syscall | yield (void) |
CPU実行権を自発的に放棄する(タイムスライスを終了する)。 More... | |
関数のプロトタイプ宣言を集約したヘッダ
Definition in file prototypes.h.
#define htonl | ( | x | ) |
Definition at line 620 of file prototypes.h.
Referenced by arp_hton(), dhcp_bld_bootp_msg(), ip_hton(), rdscomm(), rflread(), rflwrite(), rfscomm(), and rfsopen().
#define htons | ( | x | ) | ((0xff & ((x) >> 8)) | ((0xff & (x)) << 8)) |
Definition at line 619 of file prototypes.h.
Referenced by arp_hton(), dns_bldq(), dnslookup(), eth_hton(), icmp_hton(), ip_hton(), ip_out(), ipcksum(), rdscontrol(), rdsopen(), rdsprocess(), rflread(), rflwrite(), rfscontrol(), rfsndmsg(), rfsopen(), tftpget_mb(), and udp_hton().
#define ntohl | ( | x | ) |
Definition at line 623 of file prototypes.h.
Referenced by arp_ntoh(), dns_geta(), dnslookup(), getlocalip(), getutime(), ip_ntoh(), pdump(), rdscomm(), rflread(), rflwrite(), rfscomm(), rfscontrol(), and rfsndmsg().
#define ntohs | ( | x | ) | ((0xff & ((x) >> 8)) | ((0xff & (x)) << 8)) |
Definition at line 622 of file prototypes.h.
Referenced by arp_ntoh(), dns_geta(), dns_getrname(), eth_ntoh(), icmp_cksum(), icmp_ntoh(), ip_ntoh(), pdump(), pdumph(), rdscomm(), rdscontrol(), rdsopen(), rdsprocess(), rflread(), rflwrite(), rfscomm(), rfsopen(), tftp_send1(), and udp_ntoh().
void _mkinit | ( | void | ) |
ポートを用いたメッセージと待機中プロセスを解放する。
Step1. ポートの状態をLIMBOとし、他のプロセスからポート使用不可とする。
Step2. ポートシーケンス番号をリセットする。
Step3. メッセージリストが空になるまで、各メッセージを処分する。
Step4. メッセージリスト全体をフリーリストとする。
Step5. 引数で指定されたポートクリア後の状態に応じて、処理を切り替える。
・PT_ALLOCの場合:ポートテーブルエントリの先頭と末尾をNULLを指す状態とし、送受信用セマフォをリセットする。
・上記以外の場合:送受信用セマフォを削除する。
Step6. ポート状態を引数で指定された状態に変更する。
[in] | ptptr | クリア対象のポートテーブルエントリ |
[in] | newstate | ポートをクリアした後の新しい状態 |
[in] | dispose | メッセージ処分用の関数ポインタ |
Definition at line 24 of file ptclear.c.
References NULL, PT_ALLOC, PT_LIMBO, ptfree, ptentry::pthead, ptentry::ptmaxcnt, ptnode::ptmsg, ptnode::ptnext, ptentry::ptrsem, ptentry::ptseq, ptentry::ptssem, ptentry::ptstate, ptentry::pttail, semdelete(), and semreset().
Referenced by ptdelete(), and ptreset().
XINUシェルが作成したコマンドプロセスのスタックに引数argv(任意個)のローカルコピーを追加する。
Step1. 割り込みを禁止する。
Step2. 「引数の数が0以下」もしくは「トークンバッファの中にあるデータの長さが0以下」であれば、
割り込み状態を復元し、処理を修正する。
Step3. args配列と引数文字列(トークンバッファ)を続けて格納するために、プロセススタックの最下位の場所を計算する。
4Byte単位での丸め計算も行うため、args配列はユーザスタック最下位かその次の4byteの倍数アドレスから始まる。
最下位アドレス:[トークン1へのポインタ][トークン2へのポインタ][NULL][トークン1][NULL][トークン2]...:最上位アドレス
Step4. 文字列は可変長のため、args配列を超えた最初の位置を計算する。
Step5. args配列に格納されたポインタ(各引数へのポインタ)に対して、文字列領域開始アドレスをオフセットとして加え、
スタック最下位から順に格納する。 Step6. args配列に格納されたポインタの後に、区切りとしてNULLを付与する。
Step7. 引数文字列をargs配列(+ NULL)を超えた位置にコピーする。
Step8. プロセススタック中の第2引数(XINUシェルがプロセスをcreate()した際にスタックに追加した引数であり、
引数dummyと同じアドレスを持つ)を探し、第2引数の内容をプロセススタック中のargs配列アドレスに置換する。
Step9. 割り込みを許可状態に復元する。
[in] | pid | 使用するプロセスID |
[in] | ntok | 引数の数 |
[in] | tok | トークンバッファの中にあるトークンのインデックス |
[in] | tlen | トークンバッファの中にあるデータの長さ |
[in] | tokbuf | NULLで終わるトークン配列 |
[in,out] | dummy | 生成時に使用されるダミー引数。引数の配列へのポインタで置き換える必要がある。 |
Definition at line 33 of file addargs.c.
References disable(), memcpy(), NULL, OK, proctab, procent::prstkbase, procent::prstklen, procent::prstkptr, restore(), and SYSERR.
Referenced by shell().
int32 arp_alloc | ( | void | ) |
Definition at line 298 of file arp.c.
References AR_FREE, AR_RESOLVED, ARP_SIZ, arpcache, arpentry::arstate, kprintf(), memset(), NULLCH, and SYSERR.
Referenced by arp_in(), and arp_resolve().
void arp_hton | ( | struct arppacket * | ) |
Definition at line 348 of file arp.c.
References arppacket::arp_htype, arppacket::arp_op, arppacket::arp_ptype, arppacket::arp_sndpa, arppacket::arp_tarpa, htonl, and htons.
Referenced by arp_in(), and arp_resolve().
void arp_in | ( | struct arppacket * | ) |
Definition at line 158 of file arp.c.
References AR_FREE, AR_PENDING, AR_RESOLVED, arpentry::arhaddr, arp_alloc(), arppacket::arp_ethdst, arppacket::arp_ethsrc, arppacket::arp_ethtype, ARP_HALEN, arppacket::arp_hlen, arp_hton(), ARP_HTYPE, arppacket::arp_htype, arp_ntoh(), arppacket::arp_op, ARP_OP_RPLY, ARP_PALEN, arppacket::arp_plen, ARP_PTYPE, arppacket::arp_ptype, ARP_SIZ, arppacket::arp_sndha, arppacket::arp_sndpa, arppacket::arp_tarha, arppacket::arp_tarpa, arpentry::arpaddr, arpcache, arpentry::arpid, arpentry::arstate, disable(), ETH_ARP, eth_hton(), ETHER0, network::ethucast, FALSE, freebuf(), network::ipucast, network::ipvalid, kprintf(), memcpy(), NetData, OK, restore(), send(), SYSERR, TRUE, and write().
Referenced by netin().
void arp_init | ( | void | ) |
Definition at line 11 of file arp.c.
References AR_FREE, ARP_SIZ, arpcache, and arpentry::arstate.
Referenced by net_init().
void arp_ntoh | ( | struct arppacket * | ) |
Definition at line 333 of file arp.c.
References arppacket::arp_htype, arppacket::arp_op, arppacket::arp_ptype, arppacket::arp_sndpa, arppacket::arp_tarpa, ntohl, and ntohs.
Referenced by arp_in().
Definition at line 16 of file ascdate.c.
References DATE_DST_AUTO, DATE_DST_ON, dateinfo::dt_daylight, dateinfo::dt_dnam, dateinfo::dt_mnam, dateinfo::dt_msize, FALSE, isleap, OK, SECPERDY, SECPERHR, SECPERMN, sprintf(), TIMEZONE, and TRUE.
Referenced by xsh_date().
status bufinit | ( | void | ) |
プロセスのスケジューリング優先度を変更する。
Step1. 割り込みを禁止する。
Step2. 不正なPIDの場合は割り込み許可状態に戻し、処理を終了する。
Step3. 引数で指定されたPIDからプロセス情報を取得し、新しい優先度に変更する。
Step4. 割り込み許可状態に戻し、処理を終了する。
[in] | pid | 優先度を変更したいプロセスのID |
[in] | newprio | 新しい優先度 |
Definition at line 18 of file chprio.c.
References disable(), isbadpid, proctab, procent::prprio, restore(), and SYSERR.
uint32 clkcount | ( | void | ) |
interrupt clkhandler | ( | void | ) |
Definition at line 9 of file clkhandler.c.
References AM335X_TIMER1MS_TISR_OVF_IT_FLAG, clktime, count1000, firstid, isempty, preempt, QUANTUM, queuetab, resched(), sleepq, am335x_timer1ms::tisr, and wakeup().
Referenced by clkinit().
void clkinit | ( | void | ) |
Definition at line 15 of file clkinit.c.
References AM335X_TIMER1MS_ADDR, AM335X_TIMER1MS_CLKCTRL_ADDR, AM335X_TIMER1MS_CLKCTRL_EN, AM335X_TIMER1MS_IRQ, AM335X_TIMER1MS_TCLR_AR, AM335X_TIMER1MS_TCLR_ST, AM335X_TIMER1MS_TIER_OVF_IT_ENA, AM335X_TIMER1MS_TIOCP_CFG_SOFTRESET, AM335X_TIMER1MS_TISTAT_RESETDONE, clkhandler(), clktime, count1000, newqueue(), preempt, QUANTUM, set_evec(), sleepq, am335x_timer1ms::tclr, am335x_timer1ms::tier, am335x_timer1ms::tiocp_cfg, am335x_timer1ms::tistat, am335x_timer1ms::tldr, am335x_timer1ms::tnir, am335x_timer1ms::tpir, and am335x_timer1ms::ttgr.
Referenced by sysinit().
void clkint | ( | void | ) |
Definition at line 9 of file close.c.
References devtab, disable(), dentry::dvclose, isbaddev, restore(), and SYSERR.
Referenced by kill(), lfscreate(), xsh_cat(), and xsh_rdstest().
Definition at line 9 of file control.c.
References devtab, disable(), dentry::dvcntl, isbaddev, restore(), and SYSERR.
Referenced by net_init(), and shell().
関数の実行を開始するプロセスを作成する。
Step1. 割り込みを禁止する。
Step2. スタックサイズがMINSTKを下回っていた場合、サイズをMINSTKまで引き上げ、丸めを行う。
Step3. 以下のいずれかを満たした場合は、割り込み許可状態に復元し、SYSERRを返す。
・スタックが確保できなかった場合
・全てのプロセスがFREE状態ではなかった場合(使用中だった場合)
・引数のプロセス優先度が1より小さかった場合
Step4. アクティブプロセス数を1増やす。 Step5. プロセステーブルエントリを以下の状態で初期化する。
・プロセス状態 = サスペンド
・プロセス優先度 = 引数で指定した優先度
・スタックアドレス = getstk()で取得したスタックアドレス( プロセススタックの最上位にオーバフロー検知マーカを付与)
・スタックサイズ = 引数で指定されたスタックサイズ(MINSTK以上のサイズ)
・プロセス名 = 引数で指定した名前(15文字 + NULL終端)
・セマフォとメッセージ = 未使用状態
・デバイスディスクリプタ = XINU Shell用に0:STDIN(標準入力)、1:STDOUT(標準出力)、2:STDERR(標準エラー)を設定
Step6. 可変長引数と関数ポインタをスタックに積む。前提として、ARMはr0〜r3レジスタが引数渡しに使用される。
可変長引数の5個目〜N個目をスタックに積んだ後、関数ポインタをスタックに積む。
引数をレジスタ渡しするためにスタックにr4〜r11用の情報(=0)を積み、r3〜r0用の情報(引数次第で変化)を積む。
Step7. 関数のリターンアドレス(INITRET = userret()であり、kill()を呼び出す)をスタックに積む。
Step8. CPSR F bitを有効化し、スーパバイザモードに移行するためのビットマスクをスタックに積む。
このビットマスクは、コンテキストスイッチ中のリストア時に使用される。
Step9. 新しいスタックアドレスをプロセステーブルにセットする。
Step10. 割り込み許可状態に復元する。
[in] | procaddr | 関数ポインタ(プロセスのエントリポイント) |
[in] | ssize | スタックサイズ(Byte) |
[in] | priority | プロセスの優先度(> 0) |
[in] | name | プロセス名(デバッグ用) |
[in] | nargs | 本引数より後にある引数の総数 |
[in] | ... | 可変長引数 |
Definition at line 55 of file create.c.
References CONSOLE, disable(), FALSE, getpid(), getstk(), INITRET, MINSTK, newpid(), NULLCH, PNMLEN, PR_SUSP, prcount, procent::prdesc, procent::prhasmsg, procent::prname, proctab, procent::prparent, procent::prprio, procent::prsem, procent::prstate, procent::prstkbase, procent::prstklen, procent::prstkptr, restore(), roundew, STACKMAGIC, and SYSERR.
Referenced by main(), net_init(), nulluser(), rdsinit(), shell(), and startup().
void ctxsw | ( | void * | , |
void * | |||
) |
プロセスキューテーブルからキューを削除し、リスト先頭のプロセスIDを返す。
[in] | q | 使用するキューID |
Definition at line 78 of file queue.c.
References EMPTY, getfirst(), isbadqid, isempty, qentry::qnext, qentry::qprev, queuetab, and SYSERR.
Referenced by resched(), signal(), signaln(), and wakeup().
intmask disable | ( | void | ) |
割り込み禁止(intr.Sに定義がある)
Referenced by addargs(), arp_in(), arp_resolve(), chprio(), close(), control(), create(), freebuf(), freemem(), getbuf(), getc(), getdev(), getmem(), getprio(), getstk(), icmp_in(), icmp_recv(), icmp_register(), icmp_release(), icmp_send(), init(), ip_enqueue(), ip_send(), irq_dispatch(), kgetc(), kill(), kputc(), mkbufpool(), mount(), open(), panic(), ptcount(), ptcreate(), ptdelete(), ptrecv(), ptreset(), ptsend(), putc(), rdscomm(), read(), receive(), recvclr(), recvtime(), resume(), seek(), semcount(), semcreate(), semdelete(), semreset(), send(), signal(), signaln(), sleepms(), suspend(), udp_in(), udp_recv(), udp_recvaddr(), udp_register(), udp_release(), udp_send(), udp_sendto(), unsleep(), wait(), write(), and yield().
uint32 dnslookup | ( | char * | ) |
Definition at line 15 of file dns.c.
References currpid, dns_bldq(), dns_geta(), DNSLPORT, DNSPORT, DNSRETRY, network::dnsserver, DNSTIMEOUT, getlocalip(), htons, kprintf(), memset(), NetData, ntohl, NULL, SYSERR, TIMEOUT, udp_recv(), udp_register(), udp_release(), and udp_send().
Referenced by xsh_ping().
Definition at line 9 of file dot2ip.c.
References NULLCH, OK, and SYSERR.
Referenced by getlocalip(), getutime(), rdsinit(), rfsinit(), xsh_ping(), and xsh_udpecho().
void enable | ( | void | ) |
プロセスをプロセスキューテーブルの末尾に挿入する。
[in] | pid | 挿入するプロセスID |
[in] | q | 使用するキューID |
Definition at line 53 of file queue.c.
References isbadpid, isbadqid, qentry::qnext, qentry::qprev, queuetab, queuetail, and SYSERR.
Referenced by wait().
void eth_hton | ( | struct netpacket * | ) |
Definition at line 127 of file net.c.
References htons, and netpacket::net_ethtype.
Referenced by arp_in(), arp_resolve(), and ip_out().
void eth_ntoh | ( | struct netpacket * | ) |
Definition at line 139 of file net.c.
References netpacket::net_ethtype, and ntohs.
Referenced by netin().
Definition at line 18 of file ethcontrol.c.
References ethcblk::devAddress, dentry::dvminor, ETH_ADDR_LEN, ETH_CTRL_GET_MAC, ethertab, memcpy(), OK, and SYSERR.
Definition at line 9 of file ethhandler.c.
References eth_a_csreg::cpdma, ethcblk::csr, DEFER_START, DEFER_STOP, eth_a_cpdma::eoi_vector, ETH_AM335X_RDS_OWN, ETH_AM335X_RXINT, ETH_AM335X_TDS_OWN, ETH_AM335X_TXINT, ethertab, ethcblk::isem, ethcblk::osem, resched_cntl(), eth_a_stateram::rx_cp, eth_a_stateram::rx_hdp, ethcblk::rxRing, ethcblk::rxRingSize, ethcblk::rxTail, semcount(), signal(), eth_a_rx_desc::stat, eth_a_tx_desc::stat, eth_a_csreg::stateram, eth_a_stateram::tx_cp, eth_a_stateram::tx_hdp, ethcblk::txHead, ethcblk::txRing, and ethcblk::txRingSize.
Definition at line 173 of file ethinit.c.
References eth_a_csreg::ale, eth_a_rx_desc::buffer, eth_a_tx_desc::buffer, eth_a_rx_desc::buflen, eth_a_tx_desc::buflen, eth_a_rx_desc::bufoff, eth_a_tx_desc::bufoff, eth_a_wr::c0_rx_en, eth_a_wr::c0_tx_en, eth_a_csreg::cpdma, ethcblk::csr, eth_a_ale::ctrl, eth_a_mdio::ctrl, ethcblk::devAddress, dentry::dvintr, dentry::dvminor, eth_a_regs, ETH_AM335X_ALE_ADDR, ETH_AM335X_ALECTL_BY, ETH_AM335X_ALECTL_EN, ETH_AM335X_ALEPCTL_FWD, ETH_AM335X_CPDMA_ADDR, ETH_AM335X_MDIO_ADDR, ETH_AM335X_MDIOCTL_EN, ETH_AM335X_RDS_OWN, ETH_AM335X_RX_RING_SIZE, ETH_AM335X_RXINT, ETH_AM335X_SL1_ADDR, ETH_AM335X_SLCTL_EN, ETH_AM335X_SLCTL_FD, ETH_AM335X_SS_ADDR, ETH_AM335X_STATERAM_ADDR, ETH_AM335X_TDS_DIR, ETH_AM335X_TDS_EOP, ETH_AM335X_TDS_P1, ETH_AM335X_TDS_SOP, ETH_AM335X_TX_RING_SIZE, ETH_AM335X_TXINT, ETH_AM335X_WR_ADDR, ETH_BUF_SIZE, ETH_PHY_1000M, ETH_PHY_100M, ETH_PHY_10M, ETH_PHY_CTLREG, ETH_PHY_CTLREG_FD, ETH_PHY_CTLREG_SM, eth_phy_read(), eth_phy_reset(), ethertab, getmem(), ethcblk::isem, kprintf(), eth_a_sl::macctrl, eth_a_csreg::mdio, memset(), netpacket::net_ethdst, eth_a_rx_desc::next, eth_a_tx_desc::next, NULL, NULLCH, OK, ethcblk::osem, eth_a_ale::portctl, eth_a_cpdma::reset, eth_a_sl::reset, eth_a_ss::reset, eth_a_wr::reset, eth_a_cpdma::rx_ctrl, eth_a_stateram::rx_hdp, eth_a_cpdma::rx_intmask_set, ethcblk::rxBufs, ethcblk::rxHead, ethcblk::rxRing, ethcblk::rxRingSize, ethcblk::rxTail, semcreate(), set_evec(), eth_a_csreg::sl, eth_a_csreg::ss, eth_a_rx_desc::stat, eth_a_tx_desc::stat, eth_a_csreg::stateram, SYSERR, eth_a_cpdma::tx_ctrl, eth_a_stateram::tx_hdp, eth_a_cpdma::tx_intmask_set, ethcblk::txBufs, ethcblk::txHead, ethcblk::txRing, ethcblk::txRingSize, ethcblk::txTail, and eth_a_csreg::wr.
Definition at line 9 of file ethread.c.
References eth_a_rx_desc::buffer, eth_a_rx_desc::buflen, eth_a_rx_desc::bufoff, ethcblk::csr, dentry::dvminor, ETH_AM335X_RDS_OWN, ETH_BUF_SIZE, ethertab, ethcblk::isem, kprintf(), memcpy(), eth_a_rx_desc::next, NULL, eth_a_rx_desc::packlen, eth_a_stateram::rx_hdp, ethcblk::rxHead, ethcblk::rxRing, ethcblk::rxRingSize, eth_a_rx_desc::stat, eth_a_csreg::stateram, and wait().
Definition at line 9 of file ethwrite.c.
References eth_a_tx_desc::buffer, eth_a_tx_desc::buflen, eth_a_tx_desc::bufoff, ethcblk::csr, dentry::dvminor, ETH_AM335X_TDS_DIR, ETH_AM335X_TDS_EOP, ETH_AM335X_TDS_OWN, ETH_AM335X_TDS_P1, ETH_AM335X_TDS_SOP, ethertab, memcpy(), memset(), eth_a_tx_desc::next, NULL, ethcblk::osem, PACKLEN, eth_a_tx_desc::packlen, eth_a_tx_desc::stat, eth_a_csreg::stateram, eth_a_stateram::tx_hdp, ethcblk::txRing, ethcblk::txRingSize, ethcblk::txTail, and wait().
syscall freebuf | ( | char * | bufaddr | ) |
バッファプールから取得したバッファを解放する。
Step1. 割り込みを禁止する。
Step2. 解放対象バッファアドレスの4Byte前に埋め込んだバッファプールIDが不正値かどうかを確認し、
不正値であれば割り込み状態を復元し、処理を終了する。
Step3. 解放対象バッファをバッファプールに戻す。
Step4. セマフォにシグナルを送り、待機プロセスがいれば待機解除とする。
Step5. 割り込み状態を復元する。
[in] | bufaddr | getbuf()で取得したバッファアドレス |
Definition at line 19 of file freebuf.c.
References bpentry::bpnext, bpentry::bpsem, buftab, disable(), nbpools, OK, restore(), signal(), and SYSERR.
Referenced by arp_in(), icmp_in(), icmp_recv(), icmp_release(), ip_enqueue(), ip_in(), ip_local(), ip_out(), ip_send(), ipout(), netin(), udp_in(), udp_recv(), udp_recvaddr(), and udp_release().
メモリブロックを解放し、ブロックを空きリストに戻す。
Step1. 割り込みを禁止する。
Step2. 以下のいずれかの場合は、割り込み状態を復元し、処理を終了する。
・メモリブロックのサイズが0の場合
・メモリブロックのポインタがヒープ開始アドレスより小さい場合
・メモリブロックのポインタがヒープ終了アドレスより大きい場合
Step4. メモリブロックのサイズを8の倍数で丸める。
Step5. フリーメモリリストから空きメモリブロックの位置を探す。
Step6. 「一つ前のメモリブロック」と「解放対象メモリブロック」の結合を試みるため、
一つ前のメモリブロックの最終アドレスを算出する(このアドレスはTOPとして扱う)。
Step7. 解放対象メモリブロックが前後のメモリブロックと重なっていた場合は、
割り込み状態を復元し、処理を終了する。
Step8. フリーメモリリストの使用可能メモリサイズに対して、今回解放するメモリブロックのサイズを加算する。
Step9. 解放対象のメモリブロックを一つ前のメモリブロックと結合するか、フリーメモリリストに追加する。
Step10. 解放対象のメモリブロックが次のメモリブロックと隣接している場合は、結合する。
Step11. 割り込み状態を復元する。
[in] | blkaddr | メモリブロックのポインタ |
[in] | nbytes | メモリブロックのサイズ(Byte) |
Definition at line 33 of file freemem.c.
References disable(), maxheap, memlist, minheap, memblk::mlength, memblk::mnext, NULL, OK, restore(), roundmb, and SYSERR.
Referenced by mkbufpool().
char* getbuf | ( | bpid32 | poolid | ) |
事前に確保されたバッファプールからバッファを取得する。
Step1. 割り込みを禁止する。
Step2. バッファプールIDが不正値の場合は、割り込み状態を復元し、処理を終了する。
Step3. バッファプールに使用できるバッファが用意されるまで、待機する。
Step4. 提供するバッファをプール(リスト)から切り離す。
Step5. 提供するバッファの先頭4byteにバッファプールIDを記録し、4Byte分だけバッファのポインタを進める。
Step6. 割り込み状態を復元する。
[in] | poolid | バッファテーブル中のバッファプールID |
Definition at line 19 of file getbuf.c.
References bpentry::bpnext, bpentry::bpsem, buftab, disable(), nbpools, restore(), SYSERR, and wait().
Referenced by icmp_mkpkt(), netin(), udp_send(), and udp_sendto().
キューの先頭からプロセスを取り出す。
[in] | q | プロセスを取り出すためのキューID(チェックなしで有効) |
Definition at line 13 of file getitem.c.
References EMPTY, getitem(), isempty, queuehead, and queuetab.
Referenced by dequeue(), semdelete(), and semreset().
キューの任意の位置からプロセスを取り出す。
[in] | pid | 取り出すプロセスID |
Definition at line 51 of file getitem.c.
References qentry::qnext, qentry::qprev, and queuetab.
Referenced by getfirst(), getlast(), kill(), suspend(), and unsleep().
uint32 getlocalip | ( | void | ) |
Definition at line 142 of file dhcp.c.
References network::bootfile, network::bootserver, dhcp_bld_disc(), dhcp_bld_req(), dhcp_get_opt_val(), DHCP_RETRY, DHCP_SERVER_ID, network::dnsserver, dot2ip(), IP_BCAST, network::ipbcast, network::ipmask, network::ipprefix, network::iprouter, network::ipucast, network::ipvalid, kprintf(), memcpy(), NetData, ntohl, network::ntpserver, OK, SYSERR, TIMEOUT, TRUE, UDP_DHCP_CPORT, UDP_DHCP_SPORT, udp_recv(), udp_register(), udp_release(), and udp_sendto().
Referenced by dnslookup(), getutime(), rdscomm(), startup(), xsh_netinfo(), and xsh_udpeserver().
char* getmem | ( | uint32 | nbytes | ) |
ヒープ領域を割り当て、最下位のワードアドレスを返す。
Step1. 割り込みを禁止する。
Step2. 要求されたメモリのByte数が0の場合は、割り込み状態を復元し、処理を終了する。
Step3. 要求されたメモリのByte数を8の倍数で丸める。
Step4. フリーメモリリスト先頭の次のブロックから順番に、最適なメモリブロック探索を始める。
メモリブロック探索では、以下の3通りいずれかを行う。
・現在のメモリブロックがユーザの要求サイズと一致する場合、そのメモリブロックを返す。
・ユーザの要求よりメモリブロックサイズが大きい場合、必要なメモリブロックサイズ分だけを返す。
・ユーザの要求よりメモリブロックサイズが小さい場合、次のメモリブロックを探索対象とする。
メモリブロック提供時は、フリーメモリリストを連結し直し、メモリブロック合計サイズから提供サイズ分を引く。
また、割り込み状態を許可状態に復元する。
[in] | nbytes | 必要なメモリサイズ(Byte) |
Definition at line 25 of file getmem.c.
References disable(), memlist, memblk::mlength, memblk::mnext, NULL, restore(), roundmb, and SYSERR.
Referenced by ethinit(), mkbufpool(), ptinit(), and rdsinit().
pid32 getpid | ( | void | ) |
現在実行中のプロセスIDを返す。
Definition at line 11 of file getpid.c.
References currpid.
Referenced by create(), exit(), rdscontrol(), rdsread(), rdswrite(), and userret().
uint16 getport | ( | void | ) |
Definition at line 150 of file net.c.
References netportseed.
Referenced by tftpget_mb().
プロセスのスケジューリング優先度を取得する。
Step1. 割り込みを禁止する。
Step2. 不正なPIDの場合は割り込み許可状態に戻し、処理を終了する。
Step3. 引数で指定されたPIDからプロセス情報を取得し、そこから優先度を取得する。
Step4. 割り込み許可状態に戻し、処理を終了する。
[in] | pid | 優先度を取得したいプロセスのID |
Definition at line 17 of file getprio.c.
References disable(), isbadpid, proctab, procent::prprio, restore(), and SYSERR.
char* getstk | ( | uint32 | nbytes | ) |
スタックメモリを割り当て、最上位のワードアドレスを返す。
Step1. 割り込みを禁止する。
Step2. 要求メモリサイズが0の場合は、割り込み状態を復元し、処理を終了する。
Step3. 要求メモリサイズを8の倍数で丸める。
Step4. フリーメモリリストの先頭から、要求メモリサイズ以上のメモリブロックを探索する。
Step5. 要求メモリサイズを満たすメモリブロックがない場合は、割り込み状態を復元し、処理を終了する。
Step6. 要求メモリサイズとメモリブロックサイズが一致する場合は、そのブロックをメモリフリーリストから除く
Step7.要求メモリサイズよりメモリブロックサイズが大きい場合は、2つに分割し、
要求サイズと一致するブロックをスタックとし、残りをメモリフリーリストに残す。
Step8. 割り込み状態を復元する。
Step9. スタック(メモリブロックの最上位アドレス)を返す。
[in] | nbytes | 要求メモリサイズ(byte) |
Definition at line 25 of file getstk.c.
References disable(), memlist, memblk::mlength, memblk::mnext, NULL, restore(), roundmb, and SYSERR.
Referenced by create(), and sysinit().
uint32 getticks | ( | void | ) |
CPUリセット以降のclock tick数を取得する。
Definition at line 14 of file getticks.c.
Referenced by net_init().
1970年1月1日からの経過時間(秒単位)にロケーション(時差)を反映した時間を返す。
UCT(協定世界時)からの経過時刻に対してロケーション(時差)を反映する。
[in,out] | timvar | XINU時刻の取得結果の保存先 |
Definition at line 13 of file gettime.c.
References getutime(), OK, SYSERR, and utim2ltim.
Referenced by xsh_date().
Definition at line 10 of file getutime.c.
References clktime, Date, dot2ip(), dateinfo::dt_boot, dateinfo::dt_bootvalid, fprintf(), getlocalip(), memset(), NetData, ntim2xtim, ntohl, network::ntpserver, OK, stderr, SYSERR, TIMELPORT, TIMEOUT, TIMERPORT, TIMESERVER, TIMETIMEOUT, TRUE, udp_recv(), udp_register(), udp_release(), and udp_send().
Referenced by gettime().
Definition at line 14 of file gpiocontrol.c.
References gpio_csreg::clear_data, gpio_csreg::datain, gpio_csreg::deb_ena, gpio_csreg::deb_time, dentry::dvcsr, dentry::dvminor, gpio_csreg::falling, gpiocblk::gphookfn, GPIO_DEB_SET_TIME, GPIO_INT_ALL_LINES, GPIO_INT_ALL_TRIG, GPIO_INT_FALL_TRIG, GPIO_INT_LINE0_EN, GPIO_INT_LINE1_EN, GPIO_INT_LVL0_TRIG, GPIO_INT_LVL1_TRIG, GPIO_INT_RISE_TRIG, GPIO_INTERRUPT_CTL, GPIO_OUTPUT_DISABLE, GPIO_OUTPUT_ENABLE, GPIO_READ_PIN, GPIO_REG_INT_HANDLER, GPIO_WRITE_PIN, gpiotab, gpio_csreg::irqclear0, gpio_csreg::irqclear1, gpio_csreg::irqset0, gpio_csreg::irqset1, gpio_csreg::level0, gpio_csreg::level1, gpio_csreg::oe, OK, PIN_MASK, gpio_csreg::rising, gpio_csreg::set_data, and SYSERR.
void gpiohandler | ( | uint32 | ) |
Definition at line 9 of file gpiohandler.c.
References gpiocblk::gphookfn, GPIO0_BASE, GPIO0_INT_A, GPIO0_INT_B, GPIO1_BASE, GPIO1_INT_A, GPIO1_INT_B, GPIO2_BASE, GPIO2_INT_A, GPIO2_INT_B, GPIO3_BASE, GPIO3_INT_A, GPIO3_INT_B, gpiotab, gpio_csreg::irqstatus0, gpio_csreg::irqstatus1, and NULL.
Definition at line 11 of file gpioinit.c.
References gpio_csreg::clear_data, gpio_csreg::deb_ena, dentry::dvcsr, dentry::dvintr, dentry::dvirq, dentry::dvminor, gpio_csreg::falling, gpiocblk::gphookfn, GPIO1_BASE, GPIO2_BASE, GPIO3_BASE, gpiotab, gpio_csreg::irqclear0, gpio_csreg::irqclear1, gpio_csreg::irqstatus0, gpio_csreg::irqstatus1, gpio_csreg::irqwaken0, gpio_csreg::irqwaken1, gpio_csreg::level0, gpio_csreg::level1, NULL, gpio_csreg::oe, OK, PRCM_FCLK_BIT, PRCM_FCLK_GPIO1, PRCM_FCLK_GPIO2, PRCM_FCLK_GPIO3, gpio_csreg::rising, set_evec(), and gpio_csreg::sysconfig.
Definition at line 9 of file gpioread.c.
References gpio_csreg::datain, dentry::dvcsr, and OK.
Definition at line 9 of file gpiowrite.c.
References gpio_csreg::clear_data, dentry::dvcsr, OK, and gpio_csreg::set_data.
void halt | ( | void | ) |
void icmp_hton | ( | struct netpacket * | ) |
Definition at line 394 of file icmp.c.
References htons, netpacket::net_iccksum, netpacket::net_icident, and netpacket::net_icseq.
Referenced by ip_out().
void icmp_in | ( | struct netpacket * | ) |
Definition at line 26 of file icmp.c.
References disable(), freebuf(), icmpentry::iccount, ICMP_ECHOREPLY, ICMP_ECHOREQST, ICMP_FREE, ICMP_HDR_LEN, icmp_mkpkt(), ICMP_QSIZ, ICMP_RECV, ICMP_SLOTS, ICMP_USED, icmptab, icmpentry::icpid, icmpentry::icqueue, icmpentry::icremip, icmpentry::icstate, icmpentry::ictail, ip_enqueue(), IP_HDR_LEN, netpacket::net_icdata, netpacket::net_icident, netpacket::net_icseq, netpacket::net_ictype, netpacket::net_iplen, netpacket::net_ipsrc, OK, restore(), send(), and SYSERR.
Referenced by ip_local().
void icmp_init | ( | void | ) |
Definition at line 12 of file icmp.c.
References ICMP_FREE, ICMP_SLOTS, icmptab, and icmpentry::icstate.
Referenced by net_init().
Definition at line 259 of file icmp.c.
References ETH_ADDR_LEN, network::ethucast, getbuf(), ICMP_HDR_LEN, IP_HDR_LEN, IP_ICMP, network::ipucast, memcpy(), netpacket::net_ethsrc, netpacket::net_ethtype, netpacket::net_iccksum, netpacket::net_iccode, netpacket::net_icdata, netpacket::net_icident, netpacket::net_icseq, netpacket::net_ictype, netpacket::net_ipcksum, netpacket::net_ipdst, netpacket::net_ipfrag, netpacket::net_ipid, netpacket::net_iplen, netpacket::net_ipproto, netpacket::net_ipsrc, netpacket::net_iptos, netpacket::net_ipttl, netpacket::net_ipvh, netbufpool, NetData, panic(), and SYSERR.
Referenced by icmp_in(), and icmp_send().
void icmp_ntoh | ( | struct netpacket * | ) |
Definition at line 408 of file icmp.c.
References netpacket::net_iccksum, netpacket::net_icident, netpacket::net_icseq, and ntohs.
Referenced by ip_in().
Definition at line 150 of file icmp.c.
References currpid, disable(), freebuf(), icmpentry::iccount, icmpentry::ichead, ICMP_HDR_LEN, ICMP_RECV, ICMP_SLOTS, ICMP_USED, icmptab, icmpentry::icpid, icmpentry::icqueue, icmpentry::icstate, IP_HDR_LEN, netpacket::net_icdata, netpacket::net_iplen, OK, recvclr(), recvtime(), restore(), SYSERR, and TIMEOUT.
Referenced by xsh_ping().
Definition at line 103 of file icmp.c.
References disable(), icmpentry::iccount, icmpentry::ichead, ICMP_FREE, ICMP_SLOTS, ICMP_USED, icmptab, icmpentry::icpid, icmpentry::icremip, icmpentry::icstate, icmpentry::ictail, restore(), and SYSERR.
Referenced by xsh_ping().
Definition at line 312 of file icmp.c.
References DEFER_START, DEFER_STOP, disable(), freebuf(), icmpentry::iccount, icmpentry::ichead, ICMP_FREE, ICMP_SLOTS, ICMP_USED, icmptab, icmpentry::icqueue, icmpentry::icstate, OK, resched_cntl(), restore(), and SYSERR.
Referenced by xsh_ping().
Definition at line 225 of file icmp.c.
References disable(), icmp_mkpkt(), ip_send(), restore(), and SYSERR.
Referenced by xsh_ping().
デバイスとデバイスドライバを初期化する。
Step1. 割り込みを禁止する。
Step2. デバイスディスクリプタが不正値の場合は、割り込み状態を復元し、処理を終了する。
Step3. デバイス固有の初期化処理を実施する。
Step4. 割り込み許可状態に復元する。
[in] | descrp | デバイスディスクリプタ |
Definition at line 17 of file init.c.
References devtab, disable(), dentry::dvinit, isbaddev, restore(), and SYSERR.
Referenced by sysinit().
int32 initintc | ( | void | ) |
Definition at line 18 of file evec.c.
References INTC_SYSCONFIG_SOFTRESET, INTC_SYSSTATUS_RESETDONE, OK, intc_csreg::sysconfig, and intc_csreg::sysstatus.
Referenced by platinit().
優先度に基づいて、キューにプロセスを挿入する。
優先度の降順に並べたキューに対して、以下を行う。 Step1. キューを先頭から走査(whileループ部)
Step2. 挿入しようとしているプロセスIDの優先度より低い優先度を持つプロセスを探す。
Step3.「より低優先度なプロセスノード(Step2で見つけたノード)」と「その前にあるノード」との間に、 挿入したいプロセスを配置する。 なお、キューの末尾は有効な最小キーを下回るため、ループは必ず停止する。
[in] | pid | 挿入するプロセスID |
[in] | q | 使用するキューID |
[in] | key | 挿入するプロセスの優先度(キー) |
Definition at line 20 of file insert.c.
References firstid, isbadpid, isbadqid, OK, qentry::qkey, qentry::qnext, qentry::qprev, queuetab, and SYSERR.
Referenced by ready(), and resched().
Definition at line 9 of file insertd.c.
References isbadpid, isbadqid, OK, qentry::qkey, qentry::qnext, qentry::qprev, queuehead, queuetab, queuetail, and SYSERR.
Referenced by recvtime(), and sleepms().
devcall ioerr | ( | void | ) |
ステータスとしてエラーを返す(デバイステーブルの"error"エントリに対して使用する)。
devcall ionull | ( | void | ) |
何もしない(デバイステーブルの"don't care"エントリに使用する)
Definition at line 439 of file ip.c.
References disable(), freebuf(), IP_OQSIZ, ipoqueue, iqentry::iqbuf, iqentry::iqsem, iqentry::iqtail, kprintf(), OK, restore(), semcount(), signal(), and SYSERR.
Referenced by icmp_in().
void ip_hton | ( | struct netpacket * | ) |
Definition at line 338 of file ip.c.
References htonl, htons, netpacket::net_ipdst, netpacket::net_ipfrag, netpacket::net_ipid, netpacket::net_iplen, and netpacket::net_ipsrc.
Referenced by ip_out().
void ip_in | ( | struct netpacket * | ) |
Definition at line 13 of file ip.c.
References freebuf(), icmp_cksum(), icmp_ntoh(), IP_BCAST, IP_HDR_LEN, IP_ICMP, ip_local(), ip_ntoh(), IP_UDP, network::ipbcast, ipcksum(), network::ipucast, network::ipvalid, kprintf(), netpacket::net_ictype, netpacket::net_ipdst, netpacket::net_iplen, netpacket::net_ipproto, netpacket::net_ipvh, NetData, and udp_ntoh().
Referenced by netin().
void ip_local | ( | struct netpacket * | ) |
void ip_ntoh | ( | struct netpacket * | ) |
Definition at line 323 of file ip.c.
References netpacket::net_ipdst, netpacket::net_ipfrag, netpacket::net_ipid, netpacket::net_iplen, netpacket::net_ipsrc, ntohl, and ntohs.
Referenced by ip_in().
Definition at line 213 of file ip.c.
References ETH_HDR_LEN, eth_hton(), ETHER0, freebuf(), htons, icmp_cksum(), icmp_hton(), IP_HDR_LEN, ip_hton(), IP_ICMP, IP_UDP, ipcksum(), netpacket::net_iccksum, netpacket::net_ictype, netpacket::net_ipcksum, netpacket::net_iplen, netpacket::net_ipproto, netpacket::net_udpcksum, OK, SYSERR, udp_hton(), and write().
Referenced by ip_send(), and ipout().
Definition at line 103 of file ip.c.
References arp_resolve(), disable(), ETH_ADDR_LEN, network::ethbcast, freebuf(), IP_BCAST, ip_local(), ip_out(), network::ipbcast, network::ipmask, network::ipprefix, network::iprouter, network::ipucast, memcpy(), netpacket::net_ethdst, netpacket::net_ipdst, NetData, OK, restore(), and SYSERR.
Referenced by icmp_send(), udp_send(), and udp_sendto().
process ipout | ( | void | ) |
Definition at line 356 of file ip.c.
References arp_resolve(), ETH_ADDR_LEN, network::ethucast, freebuf(), IP_BCAST, ip_local(), IP_OQSIZ, ip_out(), network::ipbcast, network::ipmask, ipoqueue, network::ipprefix, network::iprouter, network::ipucast, iqentry::iqbuf, iqentry::iqhead, iqentry::iqsem, kprintf(), memcpy(), netpacket::net_ethdst, netpacket::net_ethsrc, netpacket::net_ipdst, NetData, OK, and wait().
Referenced by net_init().
指定のプロセスを終了させ、システムから終了させたプロセス情報を取り除く。
Step1. 割り込み禁止状態に移行する。
Step2. プロセスが以下の状態であれば、割り込み許可状態に復元してから処理を終了する。
・引数のPIDが不正
・引数のPIDがNULLプロセス
・引数のPIDで指定されるプロセスがFREE状態
Step3. 現在アクティブのプロセス数が1以下(NULLプロセスのみ動作中)の場合、
全ユーザプロセスが終了したため、システム終了メッセージを表示する。
Step4. 親プロセスに終了させるプロセスのIDを通知する。
Step5. XINU Shell用に確保したSTDIN(標準入力)/STDOUT(標準出力)/STDERR(標準エラー)用のディスクリプタを閉じる。
Step6. 終了させるプロセスが使用していたスタックメモリを解放する。
Step7. 終了させるプロセスの状態に応じて、以下の処理を行う。
・実行中の場合、FREE状態に移行し、再スケジューリングを行う(二度と戻ってこない)。
・SLEEP状態やタイムアウト/メッセージ到着待ちの場合、休眠キューから終了させるプロセスを取り除く。
・WAIT状態の場合、終了させるプロセス分(1個分)だけセマフォカウンタを増やす。次に、READY状態用の処理を行う。
・READY状態の場合、終了させるプロセスをキューから取り出し、終了させるプロセス状態のをFREE状態に遷移する。
Step8. 割り込み許可状態に復元してから、OKを返す。
[in] | pid | 終了させたいプロセスのID |
Definition at line 31 of file kill.c.
References close(), disable(), freestk, getitem(), isbadpid, NULLPROC, OK, PR_CURR, PR_FREE, PR_READY, PR_RECTIM, PR_SLEEP, PR_WAIT, prcount, procent::prdesc, proctab, procent::prparent, procent::prsem, procent::prstate, procent::prstkbase, procent::prstklen, resched(), restore(), sentry::scount, semtab, send(), SYSERR, unsleep(), and xdone().
Referenced by exit(), userret(), and xsh_kill().
Definition at line 10 of file lexan.c.
References NULLCH, SH_AMPER, SH_BLANK, SH_DQUOTE, SH_GREATER, SH_LESS, SH_NEWLINE, SH_SQUOTE, SH_TAB, SH_TOK_AMPER, SH_TOK_GREATER, SH_TOK_LESS, SH_TOK_OTHER, SHELL_MAXTOK, and SYSERR.
Referenced by shell().
Definition at line 19 of file lfdballoc.c.
References DFILL, FALSE, LF_AREA_DIR, LF_BLKSIZ, Lf_data, lfdata::lf_dir, lfdata::lf_dirdirty, LF_DNULL, lfdata::lf_dskdev, lfdir::lfd_dfree, memset(), panic(), read(), SYSERR, and write().
Referenced by lfsetup().
Definition at line 10 of file lfdbfree.c.
References LF_AREA_DIR, Lf_data, lfdata::lf_dir, lfdbfree::lf_nextdb, OK, and write().
Referenced by lftruncate().
Definition at line 10 of file lfflush.c.
References FALSE, LF_AREA_DIR, Lf_data, lfdata::lf_dir, lfdata::lf_dirdirty, lfdata::lf_dskdev, LF_FREE, lflcblk::lfdbdirty, lflcblk::lfdblock, lflcblk::lfdnum, lflcblk::lfibdirty, lflcblk::lfiblock, lfibput(), lflcblk::lfinum, lflcblk::lfstate, OK, SYSERR, and write().
Referenced by lflclose(), lfsetup(), and lftruncate().
int32 lfgetmode | ( | char * | ) |
Definition at line 9 of file lfgetmode.c.
References LF_MODE_N, LF_MODE_O, LF_MODE_R, LF_MODE_RW, LF_MODE_W, NULLCH, and SYSERR.
Referenced by lfsopen().
ibid32 lfiballoc | ( | void | ) |
Definition at line 10 of file lfiballoc.c.
References FALSE, lfiblk::ib_next, LF_AREA_DIR, Lf_data, lfdata::lf_dir, lfdata::lf_dirdirty, lfdata::lf_dskdev, LF_INULL, lfdir::lfd_ifree, lfibget(), panic(), and write().
Referenced by lfsetup().
Definition at line 9 of file lfibclear.c.
References lfiblk::ib_dba, lfiblk::ib_next, lfiblk::ib_offset, LF_DNULL, LF_IBLEN, and LF_INULL.
Referenced by lfscreate(), and lfsetup().
Definition at line 10 of file lfibget.c.
References ib2disp, ib2sect, LF_BLKSIZ, and read().
Referenced by lfiballoc(), lfsckfmt(), lfsetup(), and lftruncate().
Definition at line 10 of file lfibput.c.
References ib2disp, ib2sect, LF_BLKSIZ, OK, read(), SYSERR, and write().
Referenced by lfflush(), lfscreate(), lfsetup(), and lftruncate().
Definition at line 9 of file lflclose.c.
References dentry::dvminor, Lf_data, lfdata::lf_dirdirty, LF_FREE, LF_USED, lflcblk::lfdbdirty, lfflush(), lflcblk::lfibdirty, lfltab, lflcblk::lfmutex, lflcblk::lfstate, OK, signal(), SYSERR, and wait().
Definition at line 9 of file lflcontrol.c.
References dentry::dvminor, kprintf(), LF_CTL_TRUNC, Lf_data, lfdata::lf_mutex, LF_USED, lfltab, lflcblk::lfmutex, lflcblk::lfstate, lftruncate(), signal(), SYSERR, and wait().
Definition at line 9 of file lflgetc.c.
References dentry::dvminor, EOF, ldentry::ld_size, LF_BLKSIZ, LF_USED, lflcblk::lfbyte, lflcblk::lfdblock, lflcblk::lfdirptr, lfltab, lflcblk::lfmutex, lflcblk::lfpos, lfsetup(), lflcblk::lfstate, signal(), SYSERR, and wait().
Referenced by lflread().
Definition at line 11 of file lflinit.c.
References dentry::dvminor, dentry::dvnum, FALSE, LF_BLKSIZ, LF_FREE, LF_INULL, LF_NAME_LEN, lflcblk::lfbyte, lflcblk::lfdbdirty, lflcblk::lfdblock, lflcblk::lfdev, lflcblk::lfdirptr, lflcblk::lfdnum, lflcblk::lfibdirty, lflcblk::lfiblock, lflcblk::lfinum, lfltab, lflcblk::lfmutex, lflcblk::lfname, lflcblk::lfpos, lflcblk::lfstate, memset(), NULL, NULLCH, OK, and semcreate().
Definition at line 9 of file lflputc.c.
References dentry::dvminor, ldentry::ld_size, LF_BLKSIZ, Lf_data, lfdata::lf_dirdirty, LF_USED, lflcblk::lfbyte, lflcblk::lfdbdirty, lflcblk::lfdblock, lflcblk::lfdirptr, lfltab, lflcblk::lfmutex, lflcblk::lfpos, lfsetup(), lflcblk::lfstate, OK, signal(), SYSERR, TRUE, and wait().
Referenced by lflwrite().
Definition at line 9 of file lflseek.c.
References dentry::dvminor, ldentry::ld_size, LF_BLKSIZ, LF_USED, lflcblk::lfbyte, lflcblk::lfdblock, lflcblk::lfdirptr, lfltab, lflcblk::lfmutex, lflcblk::lfpos, lflcblk::lfstate, OK, signal(), SYSERR, and wait().
Definition at line 9 of file lflwrite.c.
References lflputc(), and SYSERR.
Definition at line 10 of file lfscheck.c.
References lfdir::lfd_allones, lfdir::lfd_allzeros, lfdir::lfd_fsysid, lfdir::lfd_nfiles, lfdir::lfd_revid, LFS_ID, OK, and SYSERR.
Referenced by lfsckfmt(), lfsopen(), and xsh_ls().
Definition at line 10 of file lfscreate.c.
References close(), lfiblk::ib_next, LF_AREA_DIR, LF_BLKSIZ, LF_DNULL, LF_INULL, lfibclear(), lfibput(), LFS_ID, memset(), NULLCH, OK, SYSERR, and write().
Definition at line 10 of file lfsetup.c.
References FALSE, lfiblk::ib_dba, lfiblk::ib_next, lfiblk::ib_offset, ldentry::ld_ilist, Lf_data, LF_DMASK, LF_DNULL, lfdata::lf_dskdev, LF_IDATA, LF_IMASK, LF_INULL, lfdata::lf_mutex, lflcblk::lfbyte, lfdballoc(), lflcblk::lfdbdirty, lflcblk::lfdblock, lflcblk::lfdirptr, lflcblk::lfdnum, lfflush(), lfiballoc(), lfibclear(), lflcblk::lfibdirty, lfibget(), lflcblk::lfiblock, lfibput(), lflcblk::lfinum, lflcblk::lfpos, OK, read(), signal(), TRUE, and wait().
Referenced by lflgetc(), and lflputc().
Definition at line 11 of file lfsinit.c.
References FALSE, Lf_data, lfdata::lf_dir, lfdata::lf_dirdirty, lfdata::lf_dirpresent, LF_DISK_DEV, lfdata::lf_dskdev, lfdata::lf_mutex, memset(), NULLCH, OK, and semcreate().
Definition at line 9 of file lfsopen.c.
References FALSE, kprintf(), ldentry::ld_ilist, ldentry::ld_name, ldentry::ld_size, LF_AREA_DIR, LF_BLKSIZ, Lf_data, lfdata::lf_dir, lfdata::lf_dirpresent, LF_DNULL, lfdata::lf_dskdev, LF_FREE, LF_INULL, LF_MODE_N, LF_MODE_O, LF_MODE_RW, lfdata::lf_mutex, LF_NAME_LEN, LF_NUM_DIR_ENT, LF_USED, lflcblk::lfbyte, lfdir::lfd_files, lfdir::lfd_nfiles, lflcblk::lfdbdirty, lflcblk::lfdblock, lflcblk::lfdev, lflcblk::lfdirptr, lflcblk::lfdnum, lfgetmode(), lflcblk::lfibdirty, lflcblk::lfinum, lfltab, lflcblk::lfmode, lflcblk::lfname, lflcblk::lfpos, lfscheck(), lflcblk::lfstate, Nlfl, NULLCH, read(), signal(), SYSERR, TRUE, and wait().
Definition at line 10 of file lftruncate.c.
References lfiblk::ib_dba, lfiblk::ib_next, lfiblk::ib_offset, ldentry::ld_ilist, ldentry::ld_size, LF_BLKSIZ, Lf_data, lfdata::lf_dir, lfdata::lf_dirdirty, LF_DNULL, lfdata::lf_dskdev, LF_IBLEN, LF_INULL, lflcblk::lfbyte, lfdir::lfd_ifree, lflcblk::lfdbdirty, lfdbfree(), lflcblk::lfdblock, lflcblk::lfdirptr, lflcblk::lfdnum, lfflush(), lflcblk::lfibdirty, lfibget(), lfibput(), lflcblk::lfinum, lflcblk::lfpos, OK, and TRUE.
Referenced by lflcontrol().
void* memcpy | ( | void * | s, |
const void * | ct, | ||
int | n | ||
) |
メモリAの領域(source)からメモリBの領域(Destination)にN Byteコピーする。
[in,out] | s | コピー先のアドレス(Destination address) |
[in] | ct | コピー元のアドレス(Source address) |
[in] | n | コピーサイズ(Byte) |
Definition at line 13 of file memcpy.c.
Referenced by addargs(), arp_in(), arp_resolve(), dhcp_bld_bootp_msg(), dhcp_bld_req(), dns_bldq(), dns_geta(), dns_getrname(), ethcontrol(), ethread(), ethwrite(), getlocalip(), icmp_mkpkt(), ip_send(), ipout(), raminit(), ramread(), ramwrite(), rdsread(), rdswrite(), udp_send(), and udp_sendto().
void* memset | ( | void * | s, |
int | c, | ||
int | n | ||
) |
指定のByteブロックに対して、同じ値をNバイト分書き込む。
[in,out] | s | Byteブロックへのポインタ(例:文字列) |
[in] | c | 書き込む値(1Byte) |
[in] | n | 書き込むサイズ(Byte) |
Definition at line 13 of file memset.c.
Referenced by arp_alloc(), arp_resolve(), dhcp_bld_bootp_msg(), dnslookup(), ethinit(), ethwrite(), getutime(), if(), lfdballoc(), lflinit(), lfscreate(), lfsinit(), net_init(), rdscontrol(), rdsopen(), rdsprocess(), rflread(), rflwrite(), rfscontrol(), rfsopen(), tftpget_mb(), and xsh_rdstest().
バッファプール用のメモリを割り当て、バッファ同士をリンクする。
Step1. 割り込みを禁止する。
Step2. 以下のいずれかの場合は、割り込み状態を復元し、処理を終了する。
・バッファサイズがバッファ最小値を下回る場合
・バッファサイズがバッファ最大値を超えた場合
・バッファ数が0以下の場合
・バッファ数がバッファ最大数を超えた場合
・割り当て済みのバッファプール数が最大数を超えた場合
Step3. 要求されたバッファサイズを4の倍数で丸める。
Step4. 要求されたバッファサイズ + バッファプールID分のメモリをバッファ数分、割り当てる。
メモリ確保に失敗した場合は割り込み状態を復元し、処理を終了する。 Step5. 新しいバッファプールIDを割り当て、バッファプールの総数を1増加させる。
Step6. 割り当てたバッファとバッファプールをリンクする。
Step7. 割り当てたバッファにセマフォを割り当てる。
セマフォ割り当てに失敗した場合は割り当てたバッファを解放し、バッファプール総数を元に戻し、
割り込み状態を復元し、処理を終了する。
Step8. 割り当てたバッファ同士をリンクする。
Step9. 割り込み状態を復元する。
[in] | bufsiz | バッファプール中のバッファサイズ |
[in] | numbufs | バッファプール中のバッファ数 |
Definition at line 38 of file mkbufpool.c.
References BP_MAXB, BP_MAXN, bpentry::bpnext, bpentry::bpsem, bpentry::bpsize, buftab, disable(), freemem(), getmem(), NBPOOLS, nbpools, NULL, restore(), semcreate(), and SYSERR.
Referenced by net_init().
Definition at line 9 of file mount.c.
References disable(), isbaddev, nametab, namlen(), nmentry::ndevice, NM_PRELEN, NM_REPLLEN, NNAMES, nnames, nmentry::nprefix, nmentry::nreplace, OK, restore(), and SYSERR.
Referenced by naminit().
status naminit | ( | void | ) |
Definition at line 29 of file naminit.c.
References devtab, dentry::dvname, dentry::dvnum, kprintf(), LFILESYS, mount(), NDEVS, NM_MAXLEN, nnames, NULLCH, NULLDEV, NULLSTR, OK, RFILESYS, and SYSERR.
did32 namrepl | ( | char * | , |
char | [] | ||
) |
void net_init | ( | void | ) |
Definition at line 15 of file net.c.
References arp_init(), control(), create(), ETH_ADDR_LEN, ETH_CTRL_GET_MAC, ETHER0, getticks(), icmp_init(), ICMP_QSIZ, ICMP_SLOTS, ipoqueue, ipout(), iqentry::iqhead, iqentry::iqsem, iqentry::iqtail, memset(), mkbufpool(), netbufpool, NetData, netin(), netportseed, NETPRIO, NETSTK, NULL, NULLCH, PACKLEN, panic(), resume(), semcreate(), SYSERR, udp_init(), UDP_QSIZ, and UDP_SLOTS.
Referenced by nulluser().
process netin | ( | void | ) |
process netout | ( | void | ) |
qid16 newqueue | ( | void | ) |
グローバルキューテーブルにキューを割り当て、テーブルを初期化する。
newqueue()は、キューテーブルのインデックスNPROC以降にリストの先頭/末尾を作成し、
そのリストに要素を追加できる状態にする。
次にnewqueue()を呼び出された時、キューテーブルの位置に新しいリストの先頭/末尾を配置すべきかは、
newqueue()内のstatic変数nextqidを参照すれば判断できる。
Definition at line 15 of file newqueue.c.
References EMPTY, MAXKEY, MINKEY, NPROC, NQENT, qentry::qkey, qentry::qnext, qentry::qprev, queuehead, queuetab, queuetail, and SYSERR.
Referenced by clkinit(), and sysinit().
void panic | ( | char * | msg | ) |
Panic状態に陥った旨のメッセージを表示し、全てのプロセスを停止させる。
割り込み禁止後にPanicメッセージを表示し、無限ループを行う。
[in] | msg | 表示するメッセージ |
Definition at line 12 of file panic.c.
References disable(), kprintf(), and TRUE.
Referenced by icmp_mkpkt(), irq_dispatch(), lfdballoc(), lfiballoc(), lfsckfmt(), net_init(), netin(), ptinit(), ptsend(), rdsbufalloc(), rdsinit(), rdsprocess(), and rfsinit().
int32 pci_init | ( | void | ) |
void pdump | ( | struct netpacket * | ) |
Definition at line 9 of file pdump.c.
References arppacket::arp_hlen, ARP_HTYPE, arppacket::arp_htype, arppacket::arp_op, ARP_OP_REQ, ARP_OP_RPLY, arppacket::arp_plen, ARP_PTYPE, arppacket::arp_ptype, arppacket::arp_sndha, arppacket::arp_sndpa, arppacket::arp_tarpa, ETH_HDR_LEN, ICMP_ECHOREPLY, ICMP_ECHOREQST, IP_ICMP, IP_UDP, ipcksum(), kprintf(), netpacket::net_ethdst, netpacket::net_ethsrc, netpacket::net_ethtype, netpacket::net_icident, netpacket::net_icseq, netpacket::net_ictype, netpacket::net_ipdst, netpacket::net_ipfrag, netpacket::net_ipid, netpacket::net_iplen, netpacket::net_ipproto, netpacket::net_ipsrc, netpacket::net_iptos, netpacket::net_ipttl, netpacket::net_udpdport, netpacket::net_udplen, netpacket::net_udpsport, ntohl, ntohs, and UDP_HDR_LEN.
void pdumph | ( | struct netpacket * | ) |
Definition at line 164 of file pdump.c.
References arppacket::arp_hlen, ARP_HTYPE, arppacket::arp_htype, arppacket::arp_op, ARP_OP_REQ, ARP_OP_RPLY, arppacket::arp_plen, ARP_PTYPE, arppacket::arp_ptype, arppacket::arp_sndha, arppacket::arp_sndpa, arppacket::arp_tarpa, ETH_HDR_LEN, icmp_cksum(), ICMP_ECHOREPLY, ICMP_ECHOREQST, IP_HDR_LEN, IP_ICMP, IP_UDP, ipcksum(), kprintf(), netpacket::net_ethdst, netpacket::net_ethsrc, netpacket::net_ethtype, netpacket::net_icident, netpacket::net_icseq, netpacket::net_ictype, netpacket::net_ipdst, netpacket::net_ipfrag, netpacket::net_ipid, netpacket::net_iplen, netpacket::net_ipproto, netpacket::net_ipsrc, netpacket::net_iptos, netpacket::net_ipttl, netpacket::net_udpdport, netpacket::net_udplen, netpacket::net_udpsport, ntohs, and UDP_HDR_LEN.
void platinit | ( | void | ) |
Definition at line 31 of file platinit.c.
References am335x_padctl, AM335X_PADCTL_RXTX, AM335X_PADCTL_TX, CONSOLE, counterinit(), devtab, initintc(), uart_csreg::sysc, uart_csreg::syss, UART0_PADRX_ADDR, UART0_PADRX_MODE, UART0_PADTX_ADDR, UART0_PADTX_MODE, UART_SYSC_SOFTRESET, UART_SYSS_RESETDONE, WDTADDR, watchdog_csreg::wspr, and watchdog_csreg::wwps.
Referenced by sysinit().
ポートを用いたメッセージ送受信において、メッセージ数を数える。
Step1. 割り込みを禁止する。
Step2. ポートIDが不正値もしくはポートが未割り当ての場合は、割り込み状態を復元し、
処理を終了する。 Step3. 受信メッセージ数(受信用セマフォ数)を数える。
Step4. 受信メッセージ数が0以上の場合は、送信メッセージ数(送信用セマフォ数)を数える。
Step5. 送信メッセージが0以下の場合は、受信メッセージ数にその数(送信者がブロックされた数)を
加算する。
Step6. 割り込み状態を復元する。
[in] | portid | ポートID |
Definition at line 25 of file ptcount.c.
References disable(), isbadport, porttab, PT_ALLOC, ptentry::ptrsem, ptentry::ptssem, ptentry::ptstate, restore(), semcount(), and SYSERR.
未処理のメッセージを「カウント」できるポートを作成する。
Step1. 割り込みを禁止する。
Step2. ポートサイズが0より小さい場合は割り込み状態を復元し、処理を終了する。
Step3. 0〜NPORTS(30)の中で、空きポートIDを探す。
Step4. 空きポートに以下の対応を行う。
・状態をALLOCに変更
・送受信セマフォを作成
・メッセージリストを初期化(先頭と末尾をNULLとする)
・シーケンス番号を1増加
・最大待機メッセージ数を設定
Step5. 割り込み状態を復元する。
[in] | count | ポートサイズ(未処理メッセージの最大数) |
Definition at line 23 of file ptcreate.c.
References disable(), NPORTS, NULL, porttab, PT_ALLOC, PT_FREE, ptentry::pthead, ptentry::ptmaxcnt, ptnextid, ptentry::ptrsem, ptentry::ptseq, ptentry::ptssem, ptentry::ptstate, ptentry::pttail, restore(), semcreate(), and SYSERR.
ポートを削除し、待機中のプロセスとメッセージを解放する。
Step1. 割り込みを禁止する。
Step2. ポートIDが不正、もしくはポートがALLOC状態でなければ割り込み状態を復元し、処理を終了する。
Step3. ポートを用いたメッセージと待機中プロセスを解放し、セマフォを削除する。
Step4. 次回のポート作成時には、今回削除したポートIDを使用するように設定する。
Step5. 割り込み状態を復元する。
[in] | portid | 削除対象のポート |
[in] | disp | 待機メッセージ処分用の関数ポインタ |
Definition at line 19 of file ptdelete.c.
References _ptclear(), disable(), isbadport, OK, porttab, PT_ALLOC, PT_FREE, ptnextid, ptentry::ptstate, restore(), and SYSERR.
全てのポートを初期化する。
Step1. 全てのポート中の最大メッセージ数分だけメモリを確保する。
メモリが確保できなかった場合はpanic状態となり、再起動が必要となる。
Step2. 全てのポートテーブルエントリをFREE状態として初期化する。
Step3. フリーメッセージリストをリンクさせる。
[in] | maxmsgs | 全てのポート中の最大メッセージ数 |
Definition at line 24 of file ptinit.c.
References getmem(), NPORTS, NULL, OK, panic(), porttab, PT_FREE, ptnode::ptnext, ptnextid, ptentry::ptseq, ptentry::ptstate, and SYSERR.
ポートからメッセージを受信する。受信前にメッセージが空の場合はブロッキングする。
Step1. 割り込みを禁止する。
Step2. ポートIDが不正、もしくはポートがALLOC状態でなければ割り込み状態を復元し、処理を終了する。
Step3. 送信側セマフォに空きが出るまで待機する。
セマフォ待機後、以下の状態のいずれかであれば割り込み状態を復元し、処理を終了する。
・セマフォ待機結果がエラー
・ポートがALLOC状態以外
・シーケンス番号が変化した場合
Step4. ポートフリーノードがNULL状態であれば(メッセージを使い果たした場合)、Panic状態とする。
Step5. ポートフリーノードからメッセージノード1個を切り出し、メッセージノードにメッセージを追加する。
Step6. メッセージノードをメッセージリストの末尾に追加する。
Step7. 受信セマフォにシグナルを送る。
Step8. 割り込み状態を復元する。
[in] | portid | 使用するポートのID |
Definition at line 29 of file ptrecv.c.
References disable(), isbadport, NULL, porttab, PT_ALLOC, ptfree, ptentry::pthead, ptnode::ptmsg, ptnode::ptnext, ptentry::ptrsem, ptentry::ptseq, ptentry::ptssem, ptentry::ptstate, ptentry::pttail, restore(), signal(), SYSERR, and wait().
ポートをリセットを行う。
待機中のプロセスとメッセージを解放した後、ポートを再利用できるようにする。
Step1. 割り込みを禁止する。
Step2. ポートIDが不正、もしくはポートがALLOC状態でなければ割り込み状態を復元し、処理を終了する。
Step3. ポートを用いたメッセージと待機中プロセスを解放し、セマフォはリセットする。
Step4. 割り込み状態を復元する。
[in] | portid | 削除対象のポート |
[in] | disp | 待機メッセージ処分用の関数ポインタ |
Definition at line 21 of file ptreset.c.
References _ptclear(), disable(), isbadport, OK, porttab, PT_ALLOC, ptentry::ptstate, restore(), and SYSERR.
メッセージをキューに追加する事によってポートへメッセージを送信する。
Step1. 割り込みを禁止する。
Step2. ポートIDが不正、もしくはポートがALLOC状態でなければ割り込み状態を復元し、処理を終了する。
Step3. 送信側セマフォに空きが出るまで待機する。
セマフォ待機後、以下の状態のいずれかであれば割り込み状態を復元し、処理を終了する。
・セマフォ待機結果がエラー
・ポートがALLOC状態以外
・シーケンス番号が変化した場合
Step4. ポートフリーノードがNULL状態であれば(メッセージを使い果たした場合)、Panic状態とする。
Step5. ポートフリーノードからメッセージノード1個を切り出し、メッセージノードにメッセージを追加する。
Step6. メッセージノードをメッセージリストの末尾に追加する。
Step7. 受信セマフォにシグナルを送る。
Step8. 割り込み状態を復元する。
[in] | portid | 使用するポートのID |
[in] | msg | 送信するメッセージ |
Definition at line 31 of file ptsend.c.
References disable(), isbadport, NULL, OK, panic(), porttab, PT_ALLOC, ptfree, ptentry::pthead, ptnode::ptmsg, ptnode::ptnext, ptentry::ptrsem, ptentry::ptseq, ptentry::ptssem, ptentry::ptstate, ptentry::pttail, restore(), signal(), SYSERR, and wait().
デバイスへ文字1Byteを送信する。
Step1. 割り込みを禁止する。
Step2. デバイスディスクリプタが不正値の場合は、割り込み状態を復元し、処理を終了する。
Step3. デバイスに応じたputc()処理を行う。
Step4. 割り込み状態を復元する。
[in] | descrp | デバイスディスクリプタ |
[in] | ch | 送信したい文字 |
Definition at line 18 of file putc.c.
Referenced by fprintf(), printf(), and xsh_cat().
Definition at line 9 of file ramclose.c.
References OK.
Definition at line 17 of file raminit.c.
References ramdisk::disk, memcpy(), OK, Ram, RM_BLKS, and RM_BLKSIZ.
Definition at line 10 of file ramopen.c.
References dentry::dvnum.
Definition at line 10 of file ramread.c.
References ramdisk::disk, memcpy(), OK, Ram, and RM_BLKSIZ.
Definition at line 10 of file ramwrite.c.
References ramdisk::disk, memcpy(), OK, Ram, and RM_BLKSIZ.
process rawin | ( | void | ) |
Definition at line 9 of file rdsbufalloc.c.
References NULL, panic(), rdscblk::rd_availsem, rdscblk::rd_chnext, rdscblk::rd_ctprev, rdscblk::rd_free, rdbuff::rd_next, rdbuff::rd_prev, rdbuff::rd_refcnt, SYSERR, and wait().
Referenced by rdscontrol(), rdsread(), and rdswrite().
Definition at line 9 of file rdsclose.c.
References dentry::dvminor, OK, rdscblk::rd_chnext, rdscblk::rd_ctnext, RD_FREE, rdscblk::rd_free, RD_INVALID, rdbuff::rd_next, RD_OPEN, rdbuff::rd_prev, rdscblk::rd_rhnext, rdscblk::rd_rtnext, rdscblk::rd_state, rdbuff::rd_status, rdstab, and SYSERR.
Referenced by rdscontrol().
status rdscomm | ( | struct rd_msg_hdr * | , |
int32 | , | ||
struct rd_msg_hdr * | , | ||
int32 | , | ||
struct rdscblk * | |||
) |
Definition at line 11 of file rdscomm.c.
References disable(), FALSE, getlocalip(), htonl, network::ipvalid, kprintf(), NetData, ntohl, ntohs, OK, rdscblk::rd_loc_port, RD_MSG_RESPONSE, rdscblk::rd_registered, RD_RETRIES, rdscblk::rd_seq, rdscblk::rd_ser_ip, rdscblk::rd_ser_port, RD_TIMEOUT, rdscblk::rd_udpslot, restore(), SYSERR, TIMEOUT, TRUE, udp_recv(), udp_register(), and udp_sendto().
Referenced by rdscontrol(), rdsopen(), and rdsprocess().
Definition at line 9 of file rdscontrol.c.
References dentry::dvminor, getpid(), htons, kprintf(), memset(), ntohs, NULLCH, OK, rdbuff::rd_blknum, rdscblk::rd_comproc, rdscblk::rd_comruns, rdscblk::rd_id, RD_IDLEN, RD_INVALID, RD_MSG_DREQ, rdbuff::rd_next, rdbuff::rd_op, RD_OP_SYNC, RD_OPEN, rdbuff::rd_pid, rdbuff::rd_prev, rdbuff::rd_refcnt, rdscblk::rd_reqsem, rdscblk::rd_rtprev, rdscblk::rd_state, rdbuff::rd_status, RDS_CTL_DEL, RDS_CTL_SYNC, rdsbufalloc(), rdsclose(), rdscomm(), rdstab, receive(), recvclr(), resume(), signal(), SYSERR, TIMEOUT, and TRUE.
Definition at line 17 of file rdsinit.c.
References create(), dot2ip(), dentry::dvminor, FALSE, getmem(), NULL, NULLCH, OK, panic(), rdscblk::rd_availsem, RD_BUFFS, rdscblk::rd_chnext, rdscblk::rd_chprev, rdscblk::rd_comproc, rdscblk::rd_comruns, rdscblk::rd_ctnext, rdscblk::rd_ctprev, RD_FREE, rdscblk::rd_free, rdscblk::rd_id, RD_INVALID, RD_LOC_PORT, rdscblk::rd_loc_port, rdbuff::rd_next, RD_PRIO, rdscblk::rd_registered, rdscblk::rd_reqsem, rdscblk::rd_rhnext, rdscblk::rd_rhprev, rdscblk::rd_rtnext, rdscblk::rd_rtprev, rdscblk::rd_seq, rdscblk::rd_ser_ip, rdscblk::rd_ser_port, RD_SERVER_IP, RD_SERVER_PORT, RD_STACK, rdscblk::rd_state, rdbuff::rd_status, rdsprocess(), rdstab, semcreate(), and SYSERR.
Definition at line 10 of file rdsopen.c.
References dentry::dvminor, dentry::dvnum, htons, kprintf(), memset(), ntohs, NULLCH, RD_FREE, rdscblk::rd_id, RD_IDLEN, RD_MSG_OREQ, RD_OPEN, RD_PEND, rdscblk::rd_state, rdscomm(), rdstab, SYSERR, and TIMEOUT.
void rdsprocess | ( | struct rdscblk * | ) |
Definition at line 12 of file rdsprocess.c.
References htons, memset(), ntohs, NULLCH, OK, panic(), rdscblk::rd_availsem, rdbuff::rd_blknum, RD_BLKSIZ, rdbuff::rd_block, rdscblk::rd_chnext, rdscblk::rd_free, rdscblk::rd_id, RD_IDLEN, RD_MSG_RREQ, RD_MSG_WREQ, rdbuff::rd_next, rdbuff::rd_op, RD_OP_READ, RD_OP_SYNC, RD_OP_WRITE, rdbuff::rd_pid, rdbuff::rd_prev, rdbuff::rd_refcnt, rdscblk::rd_reqsem, rdscblk::rd_rhnext, rdscblk::rd_rtnext, rdscomm(), send(), signal(), SYSERR, TIMEOUT, TRUE, and wait().
Referenced by rdsinit().
Definition at line 9 of file rdsread.c.
References dentry::dvminor, getpid(), memcpy(), OK, rdbuff::rd_blknum, RD_BLKSIZ, rdbuff::rd_block, rdscblk::rd_chnext, rdscblk::rd_comproc, rdscblk::rd_comruns, rdscblk::rd_ctnext, rdscblk::rd_free, RD_INVALID, rdbuff::rd_next, rdbuff::rd_op, RD_OP_READ, RD_OP_WRITE, RD_OPEN, rdbuff::rd_pid, rdbuff::rd_prev, rdbuff::rd_refcnt, rdscblk::rd_reqsem, rdscblk::rd_rhnext, rdscblk::rd_rtprev, rdscblk::rd_state, rdbuff::rd_status, rdsbufalloc(), rdstab, receive(), recvclr(), resume(), signal(), SYSERR, and TRUE.
Definition at line 9 of file rdswrite.c.
References dentry::dvminor, FALSE, getpid(), memcpy(), OK, rdscblk::rd_availsem, rdbuff::rd_blknum, RD_BLKSIZ, rdbuff::rd_block, rdscblk::rd_chnext, rdscblk::rd_comproc, rdscblk::rd_comruns, rdscblk::rd_ctnext, rdbuff::rd_next, rdbuff::rd_op, RD_OP_WRITE, RD_OPEN, rdbuff::rd_pid, rdbuff::rd_prev, rdbuff::rd_refcnt, rdscblk::rd_reqsem, rdscblk::rd_rhnext, rdscblk::rd_rtnext, rdscblk::rd_rtprev, rdscblk::rd_state, rdbuff::rd_status, RD_VALID, rdsbufalloc(), rdstab, resume(), semcount(), semreset(), signal(), SYSERR, and TRUE.
Definition at line 9 of file read.c.
References devtab, disable(), dentry::dvread, isbaddev, restore(), and SYSERR.
Referenced by lfdballoc(), lfibget(), lfibput(), lfsckfmt(), lfsetup(), lfsopen(), netin(), shell(), xsh_ls(), and xsh_rdstest().
プロセスをCPUサービスの対象にする。
Step1. PIDが正常値かどうかを確認する。
Step2. プロセス情報を取得し、ステータスをREADY状態に移行する。
Step3. プロセスをREADYリストに挿入する。
Step4. 再スケジューリングを行う。
[in] | pid | READY状態に遷移させるプロセスのID |
Definition at line 21 of file ready.c.
References insert(), isbadpid, OK, PR_READY, proctab, procent::prprio, procent::prstate, readylist, resched(), and SYSERR.
Referenced by resume(), semdelete(), semreset(), send(), signal(), signaln(), and wakeup().
umsg32 receive | ( | void | ) |
メッセージの受信を待ち、受信後にreceive()の呼び出し者にメッセージを返す。
Step1. 割り込みを禁止する。
Step2. 現在のプロセスが有効なメッセージを受信していない場合は受信待ち状態に移行し、
再スケジューリングを行う。
Step3. プロセスが復帰後、メッセージを取得し、メッセージフラグをリセットする。
Step4. 割り込み状態を復元する。
Definition at line 17 of file receive.c.
References currpid, disable(), FALSE, PR_RECV, procent::prhasmsg, procent::prmsg, proctab, procent::prstate, resched(), and restore().
Referenced by main(), rdscontrol(), rdsread(), and shell().
umsg32 recvclr | ( | void | ) |
受信メッセージをクリアし、待機している場合はメッセージを返す。
Definition at line 14 of file recvclr.c.
References currpid, disable(), FALSE, OK, procent::prhasmsg, procent::prmsg, proctab, restore(), and TRUE.
Referenced by arp_resolve(), icmp_recv(), main(), rdscontrol(), rdsread(), shell(), udp_recv(), and udp_recvaddr().
[in] | maxwait |
Definition at line 17 of file recvtime.c.
References currpid, disable(), FALSE, insertd(), PR_RECTIM, procent::prhasmsg, procent::prmsg, proctab, procent::prstate, resched(), restore(), sleepq, SYSERR, and TIMEOUT.
Referenced by arp_resolve(), icmp_recv(), udp_recv(), and udp_recvaddr().
void resched | ( | void | ) |
最優先の適切なプロセスにCPU実行権を渡す。
resched()は、割り込みが禁止された区間で使用される事を想定している。
Step1. 再スケジューリングを遅延させられている場合、再スケジュールを試みた事を記録して終了する。
Step2. カレント(古い)プロセスのプロセステーブルを取得する
Step3. 「カレントプロセスが現在動作中」かつ「READYリスト先頭プロセスより高優先度」の場合は終了する。
Step4. カレントプロセスの状態を実行中からREADY状態に遷移させ、READYリストに挿入する。
Step5. カレントPIDをREADYリストの先頭プロセスとし、そのプロセスをREADY状態から実行状態に遷移させる。
Step6. プリエンプション(実行中のタスクを一時的に中断する動作)のためのタイムスライスを設定する。
Step7. 古いプロセスから新しいプロセスへコンテキストスイッチを行う。
Step8. 古いプロセスはresume()後に、resched()を即座にリターンする。
Definition at line 22 of file resched.c.
References defer::attempt, ctxsw(), currpid, Defer, dequeue(), firstkey, insert(), defer::ndefers, PR_CURR, PR_READY, preempt, proctab, procent::prprio, procent::prstate, procent::prstkptr, QUANTUM, readylist, and TRUE.
Referenced by clkhandler(), kill(), ready(), receive(), recvtime(), resched_cntl(), sleepms(), suspend(), wait(), and yield().
再スケジューリングを延期させるか、もしくは許可させるかを制御する。
[in] | defer | DEFER_START(延期開始)か、DEFER_STOP(延期終了)を指定する。 |
resched_cntl()は、割り込みが禁止された区間で使用される事を想定している。
引数がDEFER_STARTの場合、以下を実行後にOKを返して終了する。
・延期されたプロセス数が0の場合は、その数を1に変更
・延期されたプロセス数が0の場合は、延期中の再スケジューリングは未実施に変更
引数がDEFER_STOPの場合、以下を実行する。
・延期されたプロセス数が負の値の場合は、SYSERRを返す。
・「延期されたプロセスが1の場合」かつ「延期中に再スケジューリング実施済み」の場合は再スケジューリングを実施し、OKを返す。 引数が不正な値の場合は、SYSERRを返す。
Definition at line 81 of file resched.c.
References defer::attempt, Defer, DEFER_START, DEFER_STOP, FALSE, defer::ndefers, OK, resched(), and SYSERR.
Referenced by ethhandler(), icmp_release(), irq_dispatch(), semdelete(), semreset(), signaln(), ttyhandler(), udp_release(), and wakeup().
void restore | ( | intmask | ) |
Referenced by addargs(), arp_in(), arp_resolve(), chprio(), close(), control(), create(), freebuf(), freemem(), getbuf(), getc(), getdev(), getmem(), getprio(), getstk(), icmp_in(), icmp_recv(), icmp_register(), icmp_release(), icmp_send(), init(), ip_enqueue(), ip_send(), kgetc(), kill(), kputc(), mkbufpool(), mount(), open(), ptcount(), ptcreate(), ptdelete(), ptrecv(), ptreset(), ptsend(), putc(), rdscomm(), read(), receive(), recvclr(), recvtime(), resume(), seek(), semcount(), semcreate(), semdelete(), semreset(), send(), signal(), signaln(), sleepms(), suspend(), udp_in(), udp_recv(), udp_recvaddr(), udp_register(), udp_release(), udp_send(), udp_sendto(), unsleep(), wait(), write(), and yield().
プロセスを休止状態(サスペンド)からREADY状態に遷移させる。
Step1. 割り込み禁止状態とし、割り込みマスクを保持する。
Step2. PIDが正常値かどうかを確認する。
Step3. レジューム対象プロセス情報を取得する。
Step4. レジューム対象プロセス情報は、休止状態(サスペンド状態)かどうかを確認する。
Step5. 現在の優先度を取得する。
Step6. プロセスをREADY状態(CPUサービス対象)にする。
Step7. 割り込み状態(割り込みマスク)を元に戻す。
[in] | pid | 休止状態からREADY状態に遷移させるプロセスのID |
Definition at line 20 of file resume.c.
References disable(), isbadpid, PR_SUSP, proctab, procent::prprio, procent::prstate, ready(), restore(), and SYSERR.
Referenced by main(), net_init(), nulluser(), rdscontrol(), rdsread(), rdswrite(), shell(), and startup().
Definition at line 9 of file rflclose.c.
References dentry::dvminor, OK, Rf_data, RF_FREE, rfdata::rf_mutex, rfltab, rflcblk::rfstate, signal(), SYSERR, and wait().
Definition at line 11 of file rflinit.c.
References dentry::dvminor, dentry::dvnum, NULLCH, OK, RF_FREE, RF_NAMLEN, rflcblk::rfdev, rfltab, rflcblk::rfmode, rflcblk::rfname, rflcblk::rfpos, and rflcblk::rfstate.
Definition at line 9 of file rflputc.c.
References OK, rflwrite(), and SYSERR.
Definition at line 9 of file rflread.c.
References dentry::dvminor, htonl, htons, kprintf(), memset(), ntohl, ntohs, NULLCH, Rf_data, RF_DATALEN, RF_FREE, rf_msg_rreq::rf_len, RF_MODE_R, RF_MSG_RREQ, rfdata::rf_mutex, RF_NAMLEN, rf_msg_rreq::rf_pos, rfltab, rflcblk::rfmode, rflcblk::rfname, rflcblk::rfpos, rfscomm(), rflcblk::rfstate, signal(), SYSERR, TIMEOUT, and wait().
Referenced by rflgetc().
Definition at line 9 of file rflseek.c.
References dentry::dvminor, OK, Rf_data, RF_FREE, rfdata::rf_mutex, rfltab, rflcblk::rfpos, rflcblk::rfstate, signal(), SYSERR, and wait().
Definition at line 9 of file rflwrite.c.
References dentry::dvminor, htonl, htons, kprintf(), memset(), ntohl, ntohs, NULLCH, Rf_data, rf_msg_wreq::rf_data, RF_DATALEN, RF_FREE, rf_msg_wreq::rf_len, RF_MODE_W, RF_MSG_WREQ, rfdata::rf_mutex, RF_NAMLEN, rf_msg_wreq::rf_pos, rfltab, rflcblk::rfmode, rflcblk::rfname, rflcblk::rfpos, rfscomm(), rflcblk::rfstate, signal(), SYSERR, TIMEOUT, and wait().
Referenced by rflputc().
int32 rfscomm | ( | struct rf_msg_hdr * | , |
int32 | , | ||
struct rf_msg_hdr * | , | ||
int32 | |||
) |
Definition at line 10 of file rfscomm.c.
References htonl, kprintf(), ntohl, ntohs, Rf_data, rfdata::rf_loc_port, RF_MSG_RESPONSE, rfdata::rf_registered, RF_RETRIES, rfdata::rf_seq, rfdata::rf_ser_ip, rfdata::rf_ser_port, RF_TIMEOUT, rfdata::rf_udp_slot, SYSERR, TIMEOUT, TRUE, udp_recv(), udp_register(), and udp_send().
Referenced by rflread(), rflwrite(), rfscontrol(), rfsndmsg(), and rfsopen().
Definition at line 9 of file rfscontrol.c.
References htons, kprintf(), memset(), ntohl, NULLCH, OK, Rf_data, RF_MSG_DREQ, RF_MSG_MREQ, RF_MSG_SREQ, RF_MSG_TREQ, RF_MSG_XREQ, rfdata::rf_mutex, RF_NAMLEN, RFS_CTL_DEL, RFS_CTL_MKDIR, RFS_CTL_RMDIR, RFS_CTL_SIZE, RFS_CTL_TRUNC, rfscomm(), rfsndmsg(), signal(), SYSERR, TIMEOUT, and wait().
int32 rfsgetmode | ( | char * | ) |
Definition at line 10 of file rfsgetmode.c.
References NULLCH, RF_MODE_N, RF_MODE_O, RF_MODE_R, RF_MODE_RW, RF_MODE_W, and SYSERR.
Referenced by rfsopen().
Definition at line 16 of file rfsinit.c.
References dot2ip(), FALSE, OK, panic(), Rf_data, RF_LOC_PORT, rfdata::rf_loc_port, rfdata::rf_mutex, rfdata::rf_registered, rfdata::rf_seq, rfdata::rf_ser_ip, rfdata::rf_ser_port, RF_SERVER_IP, RF_SERVER_PORT, semcreate(), and SYSERR.
Definition at line 9 of file rfsndmsg.c.
References htons, kprintf(), ntohl, OK, rfscomm(), SYSERR, and TIMEOUT.
Referenced by rfscontrol().
Definition at line 10 of file rfsopen.c.
References htonl, htons, kprintf(), memset(), Nrfl, ntohs, NULLCH, Rf_data, RF_FREE, rf_msg_oreq::rf_mode, RF_MSG_OREQ, rfdata::rf_mutex, RF_NAMLEN, RF_USED, rflcblk::rfdev, rfltab, rflcblk::rfmode, rflcblk::rfname, rflcblk::rfpos, rfscomm(), rfsgetmode(), rflcblk::rfstate, signal(), SYSERR, TIMEOUT, and wait().
セマフォのカウント値を返す。
Step1. 割り込みを禁止する。
Step2. 「セマフォIDが不正値」か「セマフォがFREE状態」の場合、割り込み許可状態に復元して、処理を終了する。
Step3. 引数で渡されたセマフォIDを基に、セマフォテーブルからセマフォのカウント値を取得する。
Step4. 割り込み許可状態に復元する。
[in] | semid | セマフォカウンタを確認したいセマフォのID |
Definition at line 18 of file semcount.c.
References disable(), isbadsem, restore(), S_FREE, sentry::scount, semtab, and SYSERR.
Referenced by ethhandler(), ip_enqueue(), ptcount(), rdswrite(), ttycontrol(), ttyhandle_in(), ttyhandle_out(), and ttyread().
未使用セマフォを割り当て、そのセマフォへのインデックス(セマフォID)を返す。
Step1. 割り込みを禁止する
Step2. セマフォカウント初期値が負の値、もしくは未使用のセマフォがない場合は、割り込みを許可状態に復元し、処理を終了する。
Step3. newsem()で取得したセマフォIDを用いて、セマフォテーブルからセマフォを取り出し、セマフォカウントの初期値を設定する。
Step4. 割り込みを許可状態に復元する。
[in] | count | セマフォカウントの初期値 |
Definition at line 22 of file semcreate.c.
References disable(), newsem(), restore(), sentry::scount, semtab, and SYSERR.
Referenced by ethinit(), lflinit(), lfsinit(), markinit(), mkbufpool(), net_init(), ptcreate(), rdsinit(), rfsinit(), and ttyinit().
セマフォテーブルエントリを解放し、セマフォを削除する。
Step1. 割り込みを禁止する。
Step2. セマフォIDが不正の場合は割り込みを許可状態に復元し、処理を終了する。
Step3. 削除したいセマフォの状態がFREEの場合は、割り込みを許可状態に復元し、処理を終了する。
Step4. セマフォの状態をFREEにする。
Step5. 待機状態プロセスを全てREADY状態に移行するまで、再スケジューリングを遅延(Defer)させる。
Step6. キュー操作API(getfirst())でキューの先頭から順番にプロセスIDを取り出し、READY状態にする。
Step7. 再スケジューリングの遅延を解除する。
Step8. 割り込みを許可状態に戻す。
[in] | sem | 削除したいセマフォのID |
Definition at line 22 of file semdelete.c.
References DEFER_START, DEFER_STOP, disable(), getfirst(), isbadsem, OK, ready(), resched_cntl(), restore(), S_FREE, sentry::scount, semtab, sentry::squeue, sentry::sstate, and SYSERR.
Referenced by _ptclear().
セマフォカウントをリセットし、待機中のプロセスを全て解放する。
Step1. 割り込みを禁止する。
Step2. 以下のいずれかを満たす場合、割り込みを許可状態に復元し、処理を終了する。
・引数で渡されたセマフォカウンタのリセット値が負の値の場合
・引数で渡されたセマフォIDが不整値の場合
・セマフォがFREE状態の場合
Step3. 待機状態プロセスを全てREADY状態に移行するまで、再スケジューリングを遅延(Defer)させる。
Step4. キュー操作API(getfirst())でキューの先頭から順番にプロセスIDを取り出し、READY状態にする。
Step5. 再スケジューリングの遅延を解除する。
Step6. 割り込みを許可状態に戻す。
[in] | sem | リセット対象のセマフォID |
[in] | count | 新しいセマフォカウント(0以上の値) |
Definition at line 25 of file semreset.c.
References DEFER_START, DEFER_STOP, disable(), EMPTY, getfirst(), isbadsem, OK, ready(), resched_cntl(), restore(), S_FREE, sentry::scount, semtab, sentry::squeue, sentry::sstate, and SYSERR.
Referenced by _ptclear(), and rdswrite().
プロセスにメッセージを送信し、受信側が待機状態の場合はREADY状態にする。
Step1. 割り込みを禁止する。
Step2. 引数で渡されたプロセスのIDが不正値の場合は、割り込みを許可状態に復元し、処理を終了する。
Step3. 受信側プロセスが過去のメッセージを未処理の場合は、割り込みを許可状態に復元し、処理を終了する。
Step4. メッセージを受信側プロセスに送信(セット)し、受信側プロセスのメッセージ所持フラグを有効化する。
Step5. 受信側プロセスが受信待ち状態の場合はREADY状態とし、
受信待ちかタイムアウト待ちの場合はプロセスの休眠状態を解除してからREADY状態に変更する。
Step6. 割り込みを許可状態に復元する。
[in] | pid | メッセージを受信するプロセスのID |
[in] | msg | メッセージ内容(整数かポインタ) |
Definition at line 21 of file send.c.
References disable(), isbadpid, OK, PR_RECTIM, PR_RECV, procent::prhasmsg, procent::prmsg, proctab, procent::prstate, ready(), restore(), SYSERR, TRUE, and unsleep().
Referenced by arp_in(), icmp_in(), kill(), rdsprocess(), and udp_in().
Definition at line 37 of file evec.c.
References intc_csreg::banks, intc_vector, intc_bank::mir, OK, and SYSERR.
Referenced by clkinit(), ethinit(), gpioinit(), and ttyinit().
Definition at line 54 of file shell.c.
References addargs(), cmdent::cbuiltin, cmdent::cfunc, cmdent::cname, control(), create(), EOF, F_CTL_TRUNC, FALSE, fprintf(), lexan(), NAMESPACE, ncmd, NULL, NULLCH, OK, open(), procent::prdesc, proctab, read(), receive(), recvclr(), resume(), SH_NEWLINE, SH_TOK_AMPER, SH_TOK_GREATER, SH_TOK_LESS, SH_TOK_OTHER, SHELL_BAN0, SHELL_BAN1, SHELL_BAN2, SHELL_BAN3, SHELL_BAN4, SHELL_BAN5, SHELL_BAN6, SHELL_BAN7, SHELL_BAN8, SHELL_BAN9, SHELL_BGERRMSG, SHELL_BUFLEN, SHELL_CMDPRIO, SHELL_CMDSTK, SHELL_CREATMSG, SHELL_EXIT, SHELL_EXITMSG, SHELL_INERRMSG, SHELL_MAXTOK, SHELL_OUTERRMSG, SHELL_PROMPT, SHELL_STRTMSG, SHELL_SYNERRMSG, SYSERR, and TRUE.
Referenced by main().
セマフォにシグナルを送り、待機プロセスがある場合は解除する。
Step1. 割り込みを禁止する。
Step2. 不正なセマフォIDの場合は、割り込みを許可状態に復元し、処理を終了する。
Step3. 引数で渡されたセマフォがFREE状態の場合は、割り込みを許可状態に復元し、処理を終了する。
Step4. セマフォ待ち状態のプロセスがある場合、キューの先頭にあるプロセスをREADY状態にする。
Step5. 割り込みを許可状態に復元する。
[in] | sem | シグナルを送信したいセマフォのID |
Definition at line 18 of file signal.c.
References dequeue(), disable(), isbadsem, OK, ready(), restore(), S_FREE, sentry::scount, semtab, sentry::squeue, sentry::sstate, and SYSERR.
Referenced by ethhandler(), freebuf(), ip_enqueue(), lflclose(), lflcontrol(), lflgetc(), lflputc(), lflseek(), lfsetup(), lfsopen(), mark(), ptrecv(), ptsend(), rdscontrol(), rdsprocess(), rdsread(), rdswrite(), rflclose(), rflread(), rflseek(), rflwrite(), rfscontrol(), rfsopen(), ttycontrol(), ttyhandle_in(), and xsh_ls().
セマフォにシグナルをN回送り、N個の待機プロセスがある場合はそれらをREADY状態にする。
基本的な仕様は signal()と同様であり、差異は以下の通りである。
・待機プロセスがある限り、シグナル送信を続ける事(送信上限は引数で指定された回数)
・プロセスをREADY状態にする間は再スケジューリングを遅延(Defer)させる事
[in] | sem | シグナルを送信したいセマフォのID |
[in] | count | シグナルを送信する数(最大) |
Definition at line 16 of file signaln.c.
References DEFER_START, DEFER_STOP, dequeue(), disable(), isbadsem, OK, ready(), resched_cntl(), restore(), S_FREE, sentry::scount, semtab, sentry::squeue, sentry::sstate, and SYSERR.
Referenced by ttyhandle_in(), and ttyhandle_out().
Definition at line 11 of file sleep.c.
References MAXSECONDS, OK, sleepms(), and SYSERR.
Referenced by xsh_sleep().
Definition at line 26 of file sleep.c.
References currpid, disable(), insertd(), OK, PR_SLEEP, proctab, procent::prstate, resched(), restore(), sleepq, SYSERR, and yield().
Referenced by main(), and sleep().
Definition at line 9 of file spicontrol.c.
References spi_csreg::ch, spi_csreg::chconf, spi_csreg::chrx, spi_csreg::chstat, spi_csreg::chtx, dentry::dvcsr, spi_transfer::length, OK, spi_transfer::rxbuf, SPI_CHCONF_FORCE, SPI_CHSTAT_RXS, SPI_CHSTAT_TXS, SPI_CTRL_TRANSFER, and spi_transfer::txbuf.
Definition at line 14 of file spiinit.c.
References am335x_padctl, AM335X_PADCTL_PEN, AM335X_PADCTL_PUP, AM335X_PADCTL_RXTX, AM335X_PADCTL_TX, spi_csreg::ch, spi_csreg::chconf, spi_csreg::chctrl, dentry::dvminor, spi_csreg::modulctrl, OK, SPI_0_ADDR, SPI_0_PADCTL_CS0, SPI_0_PADCTL_D0, SPI_0_PADCTL_D1, SPI_0_PADCTL_SCLK, SPI_1_ADDR, SPI_1_PADCTL_CS0, SPI_1_PADCTL_D0, SPI_1_PADCTL_D1, SPI_1_PADCTL_SCLK, SPI_CHCONF_CLKD, SPI_CHCONF_DPE1, SPI_CHCONF_EPOL, SPI_CHCONF_FORCE, SPI_CHCONF_IS, SPI_CHCONF_WL, SPI_CHCTRL_EN, SPI_MODULCTRL_SINGLE, SPI_SYSCONFIG_SOFTRESET, SPI_SYSSTATUS_RESETDONE, spi_csreg::sysconfig, and spi_csreg::sysstatus.
プロセスを一時停止し、休止状態(サスペンド)に遷移させる。
Step1. 割り込み禁止状態とし、割り込みマスクを保持する。
Step2. PIDが正常値か、NULLプロセスではないかを確認する。
NULLプロセスが休止状態になった場合、動かすプロセスがREADYリストから無くなる可能性がある。
Step3. サスペンド対象プロセス情報を取得する。
Step4. サスペンド可能なプロセスは、現在実行中かREADY状態のプロセスだけである。
READY状態の場合:READYリストからサスペンド対象プロセスを除外し、サスペンド状態とする。
実行中の場合:サスペンド状態とし、再スケジューリングを行う。
それ以外:割り込み状態(割り込みマスク)を元に戻し、エラー終了
Step5. 現在の優先度を取得する。 Step6. 割り込み状態(割り込みマスク)を元に戻す。
[in] | pid | 休止状態に移行させるプロセスのID |
Definition at line 23 of file suspend.c.
References disable(), getitem(), isbadpid, NULLPROC, PR_CURR, PR_READY, PR_SUSP, proctab, procent::prprio, procent::prstate, resched(), restore(), and SYSERR.
void trap | ( | int32 | ) |
Definition at line 9 of file ttycontrol.c.
References dentry::dvminor, FALSE, OK, semcount(), signal(), SYSERR, TC_ECHO, TC_ICHARS, TC_MODEC, TC_MODEK, TC_MODER, TC_NEXTC, TC_NOECHO, TRUE, ttytab, TY_IMCBREAK, TY_IMCOOKED, TY_IMRAW, ttycblk::tyiecho, ttycblk::tyimode, ttycblk::tyisem, ttycblk::tyitail, and wait().
Definition at line 9 of file ttygetc.c.
References dentry::dvminor, EOF, ttytab, TY_IBUFLEN, TY_IMCOOKED, ttycblk::tyeof, ttycblk::tyeofch, ttycblk::tyibuff, ttycblk::tyihead, ttycblk::tyimode, ttycblk::tyisem, and wait().
Referenced by ttyread().
void ttyhandle_in | ( | struct ttycblk * | , |
struct uart_csreg * | |||
) |
Definition at line 13 of file ttyhandle_in.c.
References uart_csreg::buffer, echoch(), eputc(), erase1(), FALSE, semcount(), signal(), signaln(), TRUE, ttykickout(), TY_IBUFLEN, TY_IMCBREAK, TY_IMRAW, TY_NEWLINE, TY_RETURN, ttycblk::tyeof, ttycblk::tyeofch, ttycblk::tyibuff, ttycblk::tyicrlf, ttycblk::tyicursor, ttycblk::tyiecho, ttycblk::tyierase, ttycblk::tyierasec, ttycblk::tyierasec2, ttycblk::tyifullc, ttycblk::tyikill, ttycblk::tyikillc, ttycblk::tyimode, ttycblk::tyisem, ttycblk::tyitail, ttycblk::tyoflow, ttycblk::tyoheld, ttycblk::tyostart, and ttycblk::tyostop.
Referenced by ttyhandler().
void ttyhandle_out | ( | struct ttycblk * | , |
struct uart_csreg * | |||
) |
Definition at line 10 of file ttyhandle_out.c.
References uart_csreg::buffer, uart_csreg::ier, semcount(), signaln(), uart_csreg::txfifo_lvl, TY_EBUFLEN, TY_OBUFLEN, ttycblk::tyebuff, ttycblk::tyehead, ttycblk::tyetail, ttycblk::tyobuff, ttycblk::tyohead, ttycblk::tyoheld, ttycblk::tyosem, UART_FIFO_SIZE, and UART_IER_ETBEI.
Referenced by ttyhandler().
void ttyhandler | ( | uint32 | ) |
Definition at line 9 of file ttyhandler.c.
References uart_csreg::buffer, CONSOLE, DEFER_START, DEFER_STOP, devtab, dentry::dvcsr, dentry::dvminor, if(), uart_csreg::iir, uart_csreg::lsr, resched_cntl(), ttyhandle_in(), ttyhandle_out(), ttytab, UART_IIR_IDMASK, UART_IIR_IRQ, UART_IIR_MSC, UART_IIR_RDA, UART_IIR_RLSI, UART_IIR_RTO, UART_IIR_THRE, UART_LSR_BI, and UART_LSR_DR.
Definition at line 17 of file ttyinit.c.
References dentry::dvcsr, dentry::dvintr, dentry::dvirq, dentry::dvminor, FALSE, uart_csreg::lcr, uart_csreg::mdr1, OK, semcreate(), set_evec(), TRUE, ttykickout(), ttytab, TY_BACKSP, TY_BACKSP2, TY_EOFCH, TY_FULLCH, TY_IMCOOKED, TY_KILLCH, TY_OBUFLEN, TY_STOPCH, TY_STRTCH, ttycblk::tyebuff, ttycblk::tyecrlf, ttycblk::tyehead, ttycblk::tyeof, ttycblk::tyeofch, ttycblk::tyetail, ttycblk::tyevis, ttycblk::tyibuff, ttycblk::tyicrlf, ttycblk::tyicursor, ttycblk::tyieback, ttycblk::tyiecho, ttycblk::tyierase, ttycblk::tyierasec, ttycblk::tyierasec2, ttycblk::tyifullc, ttycblk::tyihead, ttycblk::tyikill, ttycblk::tyikillc, ttycblk::tyimode, ttycblk::tyisem, ttycblk::tyitail, ttycblk::tyobuff, ttycblk::tyocrlf, ttycblk::tyoflow, ttycblk::tyohead, ttycblk::tyoheld, ttycblk::tyosem, ttycblk::tyostart, ttycblk::tyostop, ttycblk::tyotail, UART_DLL, UART_DLM, UART_FCR_EFIFO, UART_FCR_RRESET, UART_FCR_TRESET, UART_FCR_TRIG2, UART_LCR_8N1, UART_LCR_DLAB, and UART_MDR1_16X.
void ttykickout | ( | struct uart_csreg * | ) |
Definition at line 10 of file ttykickout.c.
References uart_csreg::ier, UART_IER_ERBFI, and UART_IER_ETBEI.
Referenced by eputc(), ttyhandle_in(), ttyinit(), and ttyputc().
Definition at line 9 of file ttyputc.c.
References dentry::dvcsr, dentry::dvminor, OK, ttykickout(), ttytab, TY_NEWLINE, TY_OBUFLEN, TY_RETURN, ttycblk::tyobuff, ttycblk::tyocrlf, ttycblk::tyosem, ttycblk::tyotail, and wait().
Referenced by ttywrite().
Definition at line 9 of file ttyread.c.
References dentry::dvminor, EOF, semcount(), SYSERR, ttygetc(), ttytab, TY_IMCOOKED, TY_NEWLINE, TY_RETURN, ttycblk::tyimode, and ttycblk::tyisem.
Definition at line 9 of file ttywrite.c.
References OK, SYSERR, and ttyputc().
void udp_hton | ( | struct netpacket * | ) |
Definition at line 567 of file udp.c.
References htons, netpacket::net_udpdport, netpacket::net_udplen, and netpacket::net_udpsport.
Referenced by ip_out().
void udp_in | ( | struct netpacket * | ) |
Definition at line 29 of file udp.c.
References disable(), freebuf(), netpacket::net_ipsrc, netpacket::net_udpdport, netpacket::net_udpsport, OK, restore(), send(), udpentry::udcount, udpentry::udlocport, UDP_FREE, UDP_QSIZ, UDP_RECV, UDP_SLOTS, UDP_USED, udpentry::udpid, udptab, udpentry::udqueue, udpentry::udremip, udpentry::udremport, udpentry::udstate, and udpentry::udtail.
Referenced by ip_local().
void udp_init | ( | void | ) |
Definition at line 12 of file udp.c.
References UDP_FREE, UDP_SLOTS, udptab, and udpentry::udstate.
Referenced by net_init().
void udp_ntoh | ( | struct netpacket * | ) |
Definition at line 553 of file udp.c.
References netpacket::net_udpdport, netpacket::net_udplen, netpacket::net_udpsport, and ntohs.
Referenced by ip_in().
Definition at line 146 of file udp.c.
References currpid, disable(), freebuf(), if(), netpacket::net_udpdata, netpacket::net_udplen, OK, recvclr(), recvtime(), restore(), SYSERR, TIMEOUT, udpentry::udcount, udpentry::udhead, UDP_HDR_LEN, UDP_QSIZ, UDP_RECV, UDP_SLOTS, UDP_USED, udpentry::udpid, udptab, udpentry::udqueue, and udpentry::udstate.
Referenced by dnslookup(), getlocalip(), getutime(), rdscomm(), rfscomm(), and xsh_udpecho().
Definition at line 227 of file udp.c.
References currpid, disable(), freebuf(), if(), netpacket::net_ipsrc, netpacket::net_udpdata, netpacket::net_udplen, netpacket::net_udpsport, OK, recvclr(), recvtime(), restore(), SYSERR, TIMEOUT, udpentry::udcount, udpentry::udhead, UDP_HDR_LEN, UDP_QSIZ, UDP_RECV, UDP_SLOTS, UDP_USED, udpentry::udpid, udptab, udpentry::udqueue, and udpentry::udstate.
Referenced by tftp_send1(), and xsh_udpeserver().
Definition at line 85 of file udp.c.
References disable(), restore(), SYSERR, udpentry::udcount, udpentry::udhead, udpentry::udlocport, UDP_FREE, UDP_SLOTS, UDP_USED, udpentry::udpid, udptab, udpentry::udremip, udpentry::udremport, udpentry::udstate, and udpentry::udtail.
Referenced by dnslookup(), getlocalip(), getutime(), rdscomm(), rfscomm(), tftpget_mb(), xsh_udpecho(), and xsh_udpeserver().
Definition at line 502 of file udp.c.
References DEFER_START, DEFER_STOP, disable(), freebuf(), OK, resched_cntl(), restore(), SYSERR, udpentry::udcount, udpentry::udhead, UDP_FREE, UDP_QSIZ, UDP_SLOTS, udptab, udpentry::udqueue, and udpentry::udstate.
Referenced by dnslookup(), getlocalip(), getutime(), tftpget_mb(), and xsh_udpecho().
Definition at line 316 of file udp.c.
References disable(), ETH_ADDR_LEN, ETH_HDR_LEN, network::ethucast, getbuf(), ip_send(), IP_UDP, network::ipucast, memcpy(), netpacket::net_ethsrc, netpacket::net_ethtype, netpacket::net_ipcksum, netpacket::net_ipdst, netpacket::net_ipfrag, netpacket::net_ipid, netpacket::net_iplen, netpacket::net_ipproto, netpacket::net_ipsrc, netpacket::net_iptos, netpacket::net_ipttl, netpacket::net_ipvh, netpacket::net_udpcksum, netpacket::net_udpdata, netpacket::net_udpdport, netpacket::net_udplen, netpacket::net_udpsport, netbufpool, NetData, OK, restore(), SYSERR, udpentry::udlocport, UDP_FREE, UDP_HDR_LEN, UDP_SLOTS, udptab, udpentry::udremip, udpentry::udremport, and udpentry::udstate.
Referenced by dnslookup(), getutime(), rfscomm(), and xsh_udpecho().
Definition at line 417 of file udp.c.
References disable(), ETH_ADDR_LEN, ETH_HDR_LEN, network::ethucast, getbuf(), ip_send(), IP_UDP, network::ipucast, memcpy(), netpacket::net_ethsrc, netpacket::net_ethtype, netpacket::net_ipcksum, netpacket::net_ipdst, netpacket::net_ipfrag, netpacket::net_ipid, netpacket::net_iplen, netpacket::net_ipproto, netpacket::net_ipsrc, netpacket::net_iptos, netpacket::net_ipttl, netpacket::net_ipvh, netpacket::net_udpcksum, netpacket::net_udpdata, netpacket::net_udpdport, netpacket::net_udplen, netpacket::net_udpsport, netbufpool, NetData, OK, restore(), SYSERR, udpentry::udlocport, UDP_FREE, UDP_HDR_LEN, UDP_SLOTS, udptab, and udpentry::udstate.
Referenced by getlocalip(), rdscomm(), tftp_send1(), tftpget_mb(), and xsh_udpeserver().
Definition at line 11 of file unsleep.c.
References disable(), getitem(), isbadpid, NPROC, OK, PR_RECTIM, PR_SLEEP, proctab, procent::prstate, qentry::qkey, qentry::qnext, queuetab, restore(), and SYSERR.
Referenced by kill(), and send().
void userret | ( | void | ) |
プロセスが最上位の関数に戻る時に呼ばれる。現在のプロセスを終了させる。
Definition at line 9 of file wait.c.
References currpid, disable(), enqueue(), isbadsem, OK, PR_WAIT, proctab, procent::prsem, procent::prstate, resched(), restore(), S_FREE, sentry::scount, semtab, sentry::squeue, sentry::sstate, and SYSERR.
Referenced by ethread(), ethwrite(), getbuf(), ipout(), lflclose(), lflcontrol(), lflgetc(), lflputc(), lflseek(), lfsetup(), lfsopen(), mark(), ptrecv(), ptsend(), rdsbufalloc(), rdsprocess(), rflclose(), rflread(), rflseek(), rflwrite(), rfscontrol(), rfsopen(), ttycontrol(), ttygetc(), ttyputc(), and xsh_ls().
void wakeup | ( | void | ) |
Definition at line 9 of file wakeup.c.
References DEFER_START, DEFER_STOP, dequeue(), firstkey, nonempty, ready(), resched_cntl(), and sleepq.
Referenced by clkhandler().
Definition at line 9 of file write.c.
References devtab, disable(), dentry::dvwrite, isbaddev, restore(), and SYSERR.
Referenced by arp_in(), arp_resolve(), ip_out(), lfdballoc(), lfdbfree(), lfflush(), lfiballoc(), lfibput(), lfscreate(), and xsh_rdstest().
void xdone | ( | void | ) |
最終プロセスの終了時、システム終了メッセージを表示する。
Definition at line 10 of file xdone.c.
References halt(), and kprintf().
Referenced by kill().
syscall yield | ( | void | ) |
CPU実行権を自発的に放棄する(タイムスライスを終了する)。
割り込みを禁止して再スケジューリングを行う。復帰後、割り込み状態を復元する。
Definition at line 12 of file yield.c.
References disable(), OK, resched(), and restore().
Referenced by sleepms().