src/server/daemon/event_solaris.c

changeset 79
f48cea237ec3
parent 46
636e05eb48f6
child 133
87b405d61f64
equal deleted inserted replaced
78:3578977d29a3 79:f48cea237ec3
67 return NULL; 67 return NULL;
68 } 68 }
69 conf->handler = ev; 69 conf->handler = ev;
70 conf->port = ev->ports[i]; 70 conf->port = ev->ports[i];
71 71
72 ev_thr_conf_t *thrconf = malloc(sizeof(ev_thr_conf_t)); 72 systhread_start(0, 0, (thrstartfunc)ev_handle_events, conf);
73 thrconf->handler = ev; 73 // TODO: error handling
74 thrconf->port = ev->ports[i];
75 systhread_start(0, 0, (thrstartfunc)ev_handle_events, thrconf);
76 /* TODO: error handling */
77 } 74 }
78 75
79 return ev; 76 return ev;
80 } 77 }
81 78
89 struct timespec timeout; 86 struct timespec timeout;
90 timeout.tv_nsec = 0; 87 timeout.tv_nsec = 0;
91 timeout.tv_sec = 600; 88 timeout.tv_sec = 600;
92 89
93 for(;;) { 90 for(;;) {
94 /* wait for events */ 91 // wait for events
95 uint_t nev = 1; 92 uint_t nev = 1;
96 int ret = port_getn(port, events, 16, &nev, &timeout); 93 int ret = port_getn(port, events, 16, &nev, &timeout);
97 if(ret == -1) { 94 if(ret == -1) {
98 /* TODO: check for error */ 95 // TODO: check for error
99 perror("port_getn"); 96 perror("port_getn");
100 continue; 97 continue;
101 } 98 }
102 99
103 for(int i=0;i<nev;i++) { 100 for(int i=0;i<nev;i++) {
118 } 115 }
119 } 116 }
120 } 117 }
121 } 118 }
122 119
123 /* returns a event handler port */ 120 // returns a event handler port
124 int ev_get_port(event_handler_t *h) { 121 int ev_get_port(event_handler_t *h) {
125 int nps = h->nports; 122 int nps = h->nports;
126 if(nps == 1) { 123 if(nps == 1) {
127 return h->ports[0]; 124 return h->ports[0];
128 } 125 }

mercurial