From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33676 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OK6E6-0006SA-Qy for qemu-devel@nongnu.org; Thu, 03 Jun 2010 04:56:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OK6E3-0002F8-64 for qemu-devel@nongnu.org; Thu, 03 Jun 2010 04:56:34 -0400 Received: from e28smtp05.in.ibm.com ([122.248.162.5]:50725) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OK6E2-0002DW-0s for qemu-devel@nongnu.org; Thu, 03 Jun 2010 04:56:31 -0400 Received: from d28relay03.in.ibm.com (d28relay03.in.ibm.com [9.184.220.60]) by e28smtp05.in.ibm.com (8.14.4/8.13.1) with ESMTP id o538uJNM009028 for ; Thu, 3 Jun 2010 14:26:19 +0530 Received: from d28av05.in.ibm.com (d28av05.in.ibm.com [9.184.220.67]) by d28relay03.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o538uJnn2859034 for ; Thu, 3 Jun 2010 14:26:19 +0530 Received: from d28av05.in.ibm.com (loopback [127.0.0.1]) by d28av05.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o538uIjc027627 for ; Thu, 3 Jun 2010 18:56:18 +1000 From: Gautham R Shenoy Date: Thu, 03 Jun 2010 14:26:18 +0530 Message-ID: <20100603085618.25546.99966.stgit@localhost.localdomain> In-Reply-To: <20100603085223.25546.88499.stgit@localhost.localdomain> References: <20100603085223.25546.88499.stgit@localhost.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH V3 1/3] qemu: Add qemu-wrappers for pthread_attr_t List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Qemu-development List Cc: Anthony Liguori , Avi Kivity , Corentin Chary Add qemu wrappers for pthread_attr_t handling. Signed-off-by: Gautham R Shenoy --- qemu-thread.c | 34 ++++++++++++++++++++++++++++++++++ qemu-thread.h | 11 +++++++++++ 2 files changed, 45 insertions(+), 0 deletions(-) diff --git a/qemu-thread.c b/qemu-thread.c index 3923db7..524860c 100644 --- a/qemu-thread.c +++ b/qemu-thread.c @@ -142,6 +142,40 @@ void qemu_thread_create(QemuThread *thread, error_exit(err, __func__); } +void qemu_thread_create_attr(QemuThread *thread, QemuThreadAttr *attr1, + void *(*start_routine)(void*), + void *arg) +{ + int err; + + err = pthread_create(&thread->thread, &(attr1->attr), start_routine, + arg); + if (err) + error_exit(err, __func__); +} + +void qemu_thread_attr_init(QemuThreadAttr *attr1) +{ + int err; + + err = pthread_attr_init(&(attr1->attr)); + + if (err) { + error_exit(err, __func__); + } +} + +void qemu_thread_attr_setdetachstate(QemuThreadAttr *attr1, int detachstate) +{ + int err; + + err = pthread_attr_setdetachstate(&(attr1->attr), detachstate); + + if (err) { + error_exit(err, __func__); + } +} + void qemu_thread_signal(QemuThread *thread, int sig) { int err; diff --git a/qemu-thread.h b/qemu-thread.h index 5ef4a3a..361ef19 100644 --- a/qemu-thread.h +++ b/qemu-thread.h @@ -15,9 +15,14 @@ struct QemuThread { pthread_t thread; }; +struct QemuThreadAttr { + pthread_attr_t attr; +}; + typedef struct QemuMutex QemuMutex; typedef struct QemuCond QemuCond; typedef struct QemuThread QemuThread; +typedef struct QemuThreadAttr QemuThreadAttr; void qemu_mutex_init(QemuMutex *mutex); void qemu_mutex_lock(QemuMutex *mutex); @@ -34,7 +39,13 @@ int qemu_cond_timedwait(QemuCond *cond, QemuMutex *mutex, uint64_t msecs); void qemu_thread_create(QemuThread *thread, void *(*start_routine)(void*), void *arg); +void qemu_thread_create_attr(QemuThread *thread, QemuThreadAttr *attr1, + void *(*start_routine)(void*), + void *arg); void qemu_thread_signal(QemuThread *thread, int sig); void qemu_thread_self(QemuThread *thread); int qemu_thread_equal(QemuThread *thread1, QemuThread *thread2); + +void qemu_thread_attr_init(QemuThreadAttr *attr1); +void qemu_thread_attr_setdetachstate(QemuThreadAttr *attr1, int detachstate); #endif