#include #include #include #include #include #define DEFAULTPRI 80 #define STACKSIZE 2048 #ifdef DEBUG #define DP(x) printf x #else #define DP(x) /* */ #endif LOCAL ID WaitID; LOCAL void task(void) { W err, port; err = so_socket(PF_INET, SOCK_STREAM, 0); if (err < 0) { DP(("task(): so_socket %d\n", err)); goto fin0; } fin0: wup_tsk(WaitID); exd_tsk(); } EXPORT ERR main(Bool startup, TC *arg) { T_CTSK ctsk; ERR err; ID tskid; err = get_tid(&WaitID); if (err < E_OK) { DP(("main(): get_tid %d\n", err)); goto fin0; } ctsk.exinf = NULL; ctsk.task = task; ctsk.itskpri = DEFAULTPRI; ctsk.stksz = STACKSIZE; ctsk.tskatr = TA_HLNG | TA_RNG0; err = vcre_tsk(&ctsk); if (err < E_OK) { DP(("main(): vcre_tsk %d\n", err)); goto fin0; } tskid = (ID) err; err = sta_tsk(tskid, 0); if (err < E_OK) { DP(("main(): sta_tsk %d\n", err)); goto fin1; } err = tslp_tsk(TMO_FEVR); if (err < E_OK) { DP(("main(): slp_tsk %d\n", err)); goto fin2; } err = -1; fin2: ter_tsk(tskid); fin1: del_tsk(tskid); fin0: return err; }