mirror of https://github.com/xqemu/xqemu.git
Cosmetics
Avoid repeated creation/initalization/destruction of attr and calls to getpid git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6633 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
5d47e3728b
commit
a8227a5a20
|
@ -25,6 +25,7 @@
|
||||||
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
|
||||||
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
|
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
|
||||||
static pthread_t thread_id;
|
static pthread_t thread_id;
|
||||||
|
static pthread_attr_t attr;
|
||||||
static int max_threads = 64;
|
static int max_threads = 64;
|
||||||
static int cur_threads = 0;
|
static int cur_threads = 0;
|
||||||
static int idle_threads = 0;
|
static int idle_threads = 0;
|
||||||
|
@ -76,8 +77,11 @@ static void thread_create(pthread_t *thread, pthread_attr_t *attr,
|
||||||
|
|
||||||
static void *aio_thread(void *unused)
|
static void *aio_thread(void *unused)
|
||||||
{
|
{
|
||||||
|
pid_t pid;
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
|
|
||||||
|
pid = getpid();
|
||||||
|
|
||||||
/* block all signals */
|
/* block all signals */
|
||||||
if (sigfillset(&set)) die("sigfillset");
|
if (sigfillset(&set)) die("sigfillset");
|
||||||
if (sigprocmask(SIG_BLOCK, &set, NULL)) die("sigprocmask");
|
if (sigprocmask(SIG_BLOCK, &set, NULL)) die("sigprocmask");
|
||||||
|
@ -142,7 +146,7 @@ static void *aio_thread(void *unused)
|
||||||
idle_threads++;
|
idle_threads++;
|
||||||
mutex_unlock(&lock);
|
mutex_unlock(&lock);
|
||||||
|
|
||||||
if (kill(getpid(), aiocb->ev_signo)) die("kill failed");
|
if (kill(pid, aiocb->ev_signo)) die("kill failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
idle_threads--;
|
idle_threads--;
|
||||||
|
@ -154,23 +158,21 @@ static void *aio_thread(void *unused)
|
||||||
|
|
||||||
static void spawn_thread(void)
|
static void spawn_thread(void)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
pthread_attr_t attr;
|
|
||||||
|
|
||||||
cur_threads++;
|
cur_threads++;
|
||||||
idle_threads++;
|
idle_threads++;
|
||||||
|
|
||||||
ret = pthread_attr_init(&attr);
|
|
||||||
if (ret) die2 (ret, "pthread_attr_init");
|
|
||||||
ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
|
||||||
if (ret) die2 (ret, "pthread_attr_setdetachstate");
|
|
||||||
thread_create(&thread_id, &attr, aio_thread, NULL);
|
thread_create(&thread_id, &attr, aio_thread, NULL);
|
||||||
ret = pthread_attr_destroy(&attr);
|
|
||||||
if (ret) die2 (ret, "pthread_attr_destroy");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int qemu_paio_init(struct qemu_paioinit *aioinit)
|
int qemu_paio_init(struct qemu_paioinit *aioinit)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = pthread_attr_init(&attr);
|
||||||
|
if (ret) die2(ret, "pthread_attr_init");
|
||||||
|
|
||||||
|
ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||||
|
if (ret) die2(ret, "pthread_attr_setdetachstate");
|
||||||
|
|
||||||
TAILQ_INIT(&request_list);
|
TAILQ_INIT(&request_list);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue