void refiq() { register struct mbuf *bp; char i_state; #ifdef PI /* Temp hack to satisfy PI DMA requirements */ int32 dma_abs; /* TEMP */ int16 dma_page; /* TEMP */ #endif /* Empty the garbage */ if(Garbq != NULLBUF){ i_state = dirps(); bp = Garbq; Garbq = NULLBUF; restore(i_state); free_p(bp); } /* Replenish interrupt buffer pool */ /* G1EMM and HB9RWM fix */ while((Intqlen < Nibufs) && (Memthresh < availmem()) ){ #ifdef notdef while(Intqlen < Nibufs){ #endif if((bp = alloc_mbuf(Ibufsize)) == NULLBUF) break; #ifdef PI /* Temp hack to satisfy PI DMA requirements */ dma_abs = ((long)FP_SEG(bp->data) << 4) + (long)FP_OFF(bp->data); dma_page = dma_abs >> 16; if(((dma_abs+Ibufsize) >> 16) != dma_page){ i_state = dirps(); bp->next = Garbq; Garbq = bp; restore(i_state); continue; } #endif i_state = dirps(); bp->next = Intq; Intq = bp; Intqlen++; restore(i_state); } if(Iminfree == -1) Iminfree = Intqlen; } void iqstat() { tprintf("Intqlen %u Ibufsize %u Iminfree %u Ibuffail %lu Imaxrq %u\n", Intqlen,Ibufsize,Iminfree,Ibuffail,Ibuf_max_rq); /* g8fsl */ }
// Adding --- By Arius 3/15/2000 // This function will begin service of telnet when printer server was started. // It will prepare parameter for telnet connection. void telnetstart(cyg_addrword_t data) { struct sockaddr_in lsocket; struct sockaddr_in sa_client; int s; FILE *network; char Buffer[50]; int16 clen; while( Network_TCPIP_ON == 0 ) ppause(100); if (telnetlink != -1) return; lsocket.sin_family = AF_INET; lsocket.sin_addr.s_addr = htonl(INADDR_ANY); lsocket.sin_port = htons(IPPORT_TELNET); telnetlink = socket(AF_INET,SOCK_STREAM,0); bind(telnetlink,(struct sockaddr *)&lsocket,sizeof(lsocket)); listen(telnetlink,1); for (;;) { clen=sizeof(sa_client); memset(&sa_client, 0, clen); if ((s = accept(telnetlink,(struct sockaddr *) &sa_client, &clen)) == -1) break; /* Service is shutting down */ if (TELNETDUsers >= TELNET_MAX_USER || availmem() != 0) { // open file will prepare to send message to client network = fdopen(s,"r+t"); fputs("\r\n This service will offer one user to use it. \r\n",network); sprintf(Buffer," The Current User is [IP:%s]\r\n",inet_ntoa(CurrentIP)); fputs(Buffer,network); fclose(network); // close network //Jesse shutdown(s,1); //Jesse close_s(s); } else { CurrentIP.s_addr = sa_client.sin_addr.s_addr; // Spawn a child process // newproc("ServicedForTelnet",1024,TServerMainFunction,s,NULL,NULL,0); if( TELNET_SERVER_MAIN_TaskHdl != 0 ) cyg_thread_delete(TELNET_SERVER_MAIN_TaskHdl); //Create TELNET_SERVER_MAIN Thread cyg_thread_create(TELNET_SERVER_MAIN_TASK_PRI, TServerMainFunction, s, "ServicedForTelnet", (void *) (TELNET_SERVER_MAIN_Stack), TELNET_SERVER_MAIN_TASK_STACK_SIZE, &TELNET_SERVER_MAIN_TaskHdl, &TELNET_SERVER_MAIN_Task); //Start TELNET_SERVER_MAIN Thread cyg_thread_resume(TELNET_SERVER_MAIN_TaskHdl); } } return; }