void lanaddress_server_thread(void *p) { L4_ThreadId_t partner; L4_MsgTag_t msgtag; idl4_msgbuf_t msgbuf; long cnt; static void *ILanAddress_vtable[ILANADDRESS_DEFAULT_VTABLE_SIZE] = ILANADDRESS_DEFAULT_VTABLE; idl4_msgbuf_init( &msgbuf ); while( 1 ) { partner = L4_nilthread; msgtag.raw = 0; cnt = 0; while( 1 ) { idl4_msgbuf_sync( &msgbuf ); idl4_reply_and_wait( &partner, &msgtag, &msgbuf, &cnt ); if( idl4_is_error( &msgtag ) ) break; idl4_process_request( &partner, &msgtag, &msgbuf, &cnt, ILanAddress_vtable[ idl4_get_function_id(&msgtag) & ILANADDRESS_FID_MASK] ); } } }
void File_server(void) { L4_ThreadId_t partner; L4_MsgTag_t msgtag; idl4_msgbuf_t msgbuf; long cnt; idl4_msgbuf_init(&msgbuf); for (cnt = 0;cnt < FILE_STRBUF_SIZE;cnt++) idl4_msgbuf_add_buffer(&msgbuf, malloc(8000), 8000); while (1) { partner = L4_nilthread; msgtag.raw = 0; cnt = 0; while (1) { idl4_msgbuf_sync(&msgbuf); idl4_reply_and_wait(&partner, &msgtag, &msgbuf, &cnt); if (idl4_is_error(&msgtag)) break; idl4_process_request(&partner, &msgtag, &msgbuf, &cnt, File_vtable[idl4_get_function_id(&msgtag) & FILE_FID_MASK]); } } }