void rx_task(void)
{
char tmp[64];
int i = 0;
struct sk_buff *skb;
for(;;){
skb = get_rx_skb();
if( skb ) {
rx_process(skb);
}
}
}
static int get_a_command_line(tty_struct_t *tty, char *buffer)
{
char ch;
int len = 0;
int i;
if( !buffer || !tty )
return 0;
while(!( tty->read_q.head == tty->read_q.tail ) ) {
ch =tty->read_q.buf[tty->read_q.tail];
tty->read_q.tail = (tty->read_q.tail +1) &(TTY_BUF_SIZE-1);
wmb();
if( ch == 10 ) {
break;
}
}
buffer[len+1] = 0;
return len;
}
<pre class="cpp" name="code">void tty_task(void)
{
int len = 0;
char *command_line = (char *)MEM_COMMAND_LINE_BUF;
int i;
tty_struct_t *tty;
cbuf_t *tmp_buf;
current->tty_channel_id = CONSOLE_ID;
g_ttx_task = current;
printk("command>");
for(;;){
len = 0;
while(1) {
tty = get_tty(CONSOLE_ID);
if(!( tty->read_q.head == tty->read_q.tail ) ) {
command_line[len] = tty->read_q.buf[tty->read_q.tail];
tty->read_q.tail = (tty->read_q.tail +1) &(TTY_BUF_SIZE-1);
wmb();
if(command_line[len] == 10 ) {
command_line[len] = '\0';
break;
}
len++;
}
}
do_cmd(command_line);
//printk("command>");
}
}