diff options
| author | erdgeist <> | 2007-11-19 21:10:53 +0000 |
|---|---|---|
| committer | erdgeist <> | 2007-11-19 21:10:53 +0000 |
| commit | 49ba269b9d09746e90e153f3e245eaf3f97e35cc (patch) | |
| tree | f4847038b777d85dccc3f0ac594ef28d88f4ec40 /ot_mutex.c | |
| parent | 3528752c7b82d23b4cf9331a6df56e2cc8db9239 (diff) | |
Cleanup now moved to its own thread, too
Diffstat (limited to 'ot_mutex.c')
| -rw-r--r-- | ot_mutex.c | 24 |
1 files changed, 24 insertions, 0 deletions
| @@ -218,6 +218,30 @@ ot_taskid mutex_workqueue_poptask( ot_tasktype *tasktype ) { | |||
| 218 | return taskid; | 218 | return taskid; |
| 219 | } | 219 | } |
| 220 | 220 | ||
| 221 | void mutex_workqueue_pushsuccess( ot_taskid taskid ) { | ||
| 222 | struct ot_task ** task; | ||
| 223 | |||
| 224 | /* Want exclusive access to tasklist */ | ||
| 225 | MTX_DBG( "pushsuccess locks.\n" ); | ||
| 226 | pthread_mutex_lock( &tasklist_mutex ); | ||
| 227 | MTX_DBG( "pushsuccess locked.\n" ); | ||
| 228 | |||
| 229 | task = &tasklist; | ||
| 230 | while( *task && ( (*task)->taskid != taskid ) ) | ||
| 231 | *task = (*task)->next; | ||
| 232 | |||
| 233 | if( *task && ( (*task)->taskid == taskid ) ) { | ||
| 234 | struct ot_task *ptask = *task; | ||
| 235 | *task = (*task)->next; | ||
| 236 | free( ptask ); | ||
| 237 | } | ||
| 238 | |||
| 239 | /* Release lock */ | ||
| 240 | MTX_DBG( "pushsuccess unlocks.\n" ); | ||
| 241 | pthread_mutex_unlock( &tasklist_mutex ); | ||
| 242 | MTX_DBG( "pushsuccess unlocked.\n" ); | ||
| 243 | } | ||
| 244 | |||
| 221 | int mutex_workqueue_pushresult( ot_taskid taskid, int iovec_entries, struct iovec *iovec ) { | 245 | int mutex_workqueue_pushresult( ot_taskid taskid, int iovec_entries, struct iovec *iovec ) { |
| 222 | struct ot_task * task; | 246 | struct ot_task * task; |
| 223 | /* Want exclusive access to tasklist */ | 247 | /* Want exclusive access to tasklist */ |
