Changes in uspace/srv/net/module.c [21580dd:a64c64d] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/net/module.c
r21580dd ra64c64d 60 60 * @returns Other error codes as defined for each specific module message function. 61 61 */ 62 extern int module_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count);62 extern int module_message(ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count); 63 63 64 64 /** External function to print the module name. … … 66 66 * The function has to be defined in each module. 67 67 */ 68 extern void module_print_name( void);68 extern void module_print_name(void); 69 69 70 70 /** External module startup function. … … 73 73 * @param[in] client_connection The client connection function to be registered. 74 74 */ 75 extern int module_start( async_client_conn_t client_connection);75 extern int module_start(async_client_conn_t client_connection); 76 76 77 77 /*@}*/ … … 81 81 * @param[in] icall The initial message call structure. 82 82 */ 83 void client_connection( ipc_callid_t iid, ipc_call_t * icall);83 void client_connection(ipc_callid_t iid, ipc_call_t * icall); 84 84 85 85 /** Starts the module. … … 89 89 * @returns Other error codes as defined for each specific module start function. 90 90 */ 91 int main( int argc, char * argv[]);91 int main(int argc, char * argv[]); 92 92 93 void client_connection( ipc_callid_t iid, ipc_call_t * icall){94 ipc_callid_t 95 ipc_call_t 96 ipc_call_t 97 int 98 int 93 void client_connection(ipc_callid_t iid, ipc_call_t * icall){ 94 ipc_callid_t callid; 95 ipc_call_t call; 96 ipc_call_t answer; 97 int answer_count; 98 int res; 99 99 100 100 /* … … 102 102 * - Answer the first IPC_M_CONNECT_ME_TO call. 103 103 */ 104 ipc_answer_0( iid, EOK);104 ipc_answer_0(iid, EOK); 105 105 106 while( true ){107 refresh_answer( & answer, & answer_count );106 // process additional messages 107 while(true){ 108 108 109 callid = async_get_call( & call );110 re s = module_message( callid, & call, & answer, & answer_count);109 // clear the answer structure 110 refresh_answer(&answer, &answer_count); 111 111 112 if( IPC_GET_METHOD( call ) == IPC_M_PHONE_HUNGUP ) return; 112 // fetch the next message 113 callid = async_get_call(&call); 113 114 114 answer_call( callid, res, & answer, answer_count ); 115 // process the message 116 res = module_message(callid, &call, &answer, &answer_count); 117 118 // end if said to either by the message or the processing result 119 if((IPC_GET_METHOD(call) == IPC_M_PHONE_HUNGUP) || (res == EHANGUP)){ 120 return; 121 } 122 123 // answer the message 124 answer_call(callid, res, &answer, answer_count); 115 125 } 116 126 } 117 127 118 int main( int argc, char * argv[]){128 int main(int argc, char * argv[]){ 119 129 ERROR_DECLARE; 120 130 131 // print the module label 121 132 printf("Task %d - ", task_get_id()); 122 133 module_print_name(); 123 printf( "\n" ); 124 if( ERROR_OCCURRED( module_start( client_connection ))){ 125 printf( " - ERROR %i\n", ERROR_CODE ); 134 printf("\n"); 135 136 // start the module 137 if(ERROR_OCCURRED(module_start(client_connection))){ 138 printf(" - ERROR %i\n", ERROR_CODE); 126 139 return ERROR_CODE; 127 140 } 141 128 142 return EOK; 129 143 }
Note:
See TracChangeset
for help on using the changeset viewer.