thread.h revision 0c0b2b4e96b030854987b16a779e30a3741d3b0d
15d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef __QEMU_THREAD_H 25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define __QEMU_THREAD_H 1 35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "semaphore.h" 45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "pthread.h" 55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct QemuMutex { 75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner pthread_mutex_t lock; 85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}; 95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct QemuCond { 115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner pthread_cond_t cond; 125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}; 135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct QemuThread { 155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner pthread_t thread; 165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}; 175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct QemuMutex QemuMutex; 195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct QemuCond QemuCond; 205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct QemuThread QemuThread; 215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_mutex_init(QemuMutex *mutex); 230c0b2b4e96b030854987b16a779e30a3741d3b0dDavid Turnervoid qemu_mutex_destroy(QemuMutex *mutex); 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_mutex_lock(QemuMutex *mutex); 255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint qemu_mutex_trylock(QemuMutex *mutex); 265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint qemu_mutex_timedlock(QemuMutex *mutex, uint64_t msecs); 275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_mutex_unlock(QemuMutex *mutex); 285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_cond_init(QemuCond *cond); 300c0b2b4e96b030854987b16a779e30a3741d3b0dDavid Turnervoid qemu_cond_destroy(QemuCond *cond); 315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_cond_signal(QemuCond *cond); 325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_cond_broadcast(QemuCond *cond); 335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_cond_wait(QemuCond *cond, QemuMutex *mutex); 345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint qemu_cond_timedwait(QemuCond *cond, QemuMutex *mutex, uint64_t msecs); 355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_thread_create(QemuThread *thread, 375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void *(*start_routine)(void*), 385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void *arg); 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_thread_signal(QemuThread *thread, int sig); 405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid qemu_thread_self(QemuThread *thread); 415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint qemu_thread_equal(QemuThread *thread1, QemuThread *thread2); 420c0b2b4e96b030854987b16a779e30a3741d3b0dDavid Turnervoid qemu_thread_exit(void *retval); 430c0b2b4e96b030854987b16a779e30a3741d3b0dDavid Turner 445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 45