Commit a8227a5a200f1bb52ecd0f1a96b24d2e2dbf39f5

Authored by malc
1 parent 5d47e372

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
Showing 1 changed file with 13 additions and 11 deletions
posix-aio-compat.c
... ... @@ -25,6 +25,7 @@
25 25 static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
26 26 static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
27 27 static pthread_t thread_id;
  28 +static pthread_attr_t attr;
28 29 static int max_threads = 64;
29 30 static int cur_threads = 0;
30 31 static int idle_threads = 0;
... ... @@ -76,8 +77,11 @@ static void thread_create(pthread_t *thread, pthread_attr_t *attr,
76 77  
77 78 static void *aio_thread(void *unused)
78 79 {
  80 + pid_t pid;
79 81 sigset_t set;
80 82  
  83 + pid = getpid();
  84 +
81 85 /* block all signals */
82 86 if (sigfillset(&set)) die("sigfillset");
83 87 if (sigprocmask(SIG_BLOCK, &set, NULL)) die("sigprocmask");
... ... @@ -142,7 +146,7 @@ static void *aio_thread(void *unused)
142 146 idle_threads++;
143 147 mutex_unlock(&lock);
144 148  
145   - if (kill(getpid(), aiocb->ev_signo)) die("kill failed");
  149 + if (kill(pid, aiocb->ev_signo)) die("kill failed");
146 150 }
147 151  
148 152 idle_threads--;
... ... @@ -154,23 +158,21 @@ static void *aio_thread(void *unused)
154 158  
155 159 static void spawn_thread(void)
156 160 {
157   - int ret;
158   - pthread_attr_t attr;
159   -
160 161 cur_threads++;
161 162 idle_threads++;
162   -
163   - ret = pthread_attr_init(&attr);
164   - if (ret) die2 (ret, "pthread_attr_init");
165   - ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
166   - if (ret) die2 (ret, "pthread_attr_setdetachstate");
167 163 thread_create(&thread_id, &attr, aio_thread, NULL);
168   - ret = pthread_attr_destroy(&attr);
169   - if (ret) die2 (ret, "pthread_attr_destroy");
170 164 }
171 165  
172 166 int qemu_paio_init(struct qemu_paioinit *aioinit)
173 167 {
  168 + int ret;
  169 +
  170 + ret = pthread_attr_init(&attr);
  171 + if (ret) die2(ret, "pthread_attr_init");
  172 +
  173 + ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
  174 + if (ret) die2(ret, "pthread_attr_setdetachstate");
  175 +
174 176 TAILQ_INIT(&request_list);
175 177  
176 178 return 0;
... ...