ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libeio/etp.c
(Generate patch)

Comparing libeio/etp.c (file contents):
Revision 1.7 by root, Thu Jun 25 18:12:53 2015 UTC vs.
Revision 1.8 by root, Thu Jun 25 18:14:19 2015 UTC

105{ 105{
106 ETP_REQ *qs[ETP_NUM_PRI], *qe[ETP_NUM_PRI]; /* qstart, qend */ 106 ETP_REQ *qs[ETP_NUM_PRI], *qe[ETP_NUM_PRI]; /* qstart, qend */
107 int size; 107 int size;
108} etp_reqq; 108} etp_reqq;
109 109
110typedef struct etp_pool *etp_pool;
111
112typedef struct etp_worker
113{
114 etp_pool pool;
115
116 struct etp_tmpbuf tmpbuf;
117
118 /* locked by pool->wrklock */
119 struct etp_worker *prev, *next;
120
121 xthread_t tid;
122
123#ifdef ETP_WORKER_COMMON
124 ETP_WORKER_COMMON
125#endif
126} etp_worker;
127
110struct etp_pool 128struct etp_pool
111{ 129{
112 void *userdata; 130 void *userdata;
113 131
114 etp_reqq req_queue; 132 etp_reqq req_queue;
133 xmutex_t reqlock; 151 xmutex_t reqlock;
134 xcond_t reqwait; 152 xcond_t reqwait;
135 153
136 etp_worker wrk_first; 154 etp_worker wrk_first;
137}; 155};
138
139typedef struct etp_pool *etp_pool;
140
141typedef struct etp_worker
142{
143 etp_pool pool;
144
145 struct etp_tmpbuf tmpbuf;
146
147 /* locked by pool->wrklock */
148 struct etp_worker *prev, *next;
149
150 xthread_t tid;
151
152#ifdef ETP_WORKER_COMMON
153 ETP_WORKER_COMMON
154#endif
155} etp_worker;
156 156
157#define ETP_WORKER_LOCK(wrk) X_LOCK (pool->wrklock) 157#define ETP_WORKER_LOCK(wrk) X_LOCK (pool->wrklock)
158#define ETP_WORKER_UNLOCK(wrk) X_UNLOCK (pool->wrklock) 158#define ETP_WORKER_UNLOCK(wrk) X_UNLOCK (pool->wrklock)
159 159
160/* worker threads management */ 160/* worker threads management */
418 418
419 X_LOCK (pool->wrklock); 419 X_LOCK (pool->wrklock);
420 420
421 if (xthread_create (&wrk->tid, etp_proc, (void *)wrk)) 421 if (xthread_create (&wrk->tid, etp_proc, (void *)wrk))
422 { 422 {
423 wrk->prev = &wpool->rk_first; 423 wrk->prev = &pool->wrk_first;
424 wrk->next = pool->wrk_first.next; 424 wrk->next = pool->wrk_first.next;
425 pool->wrk_first.next->prev = wrk; 425 pool->wrk_first.next->prev = wrk;
426 pool->wrk_first.next = wrk; 426 pool->wrk_first.next = wrk;
427 ++pool->started; 427 ++pool->started;
428 } 428 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines