]> Zhao Yanbai Git Server - minix.git/commitdiff
libblockdriver: increase stack size to 8KB per thread
authorDavid van Moolenbroek <david@minix3.org>
Thu, 9 Feb 2012 21:28:18 +0000 (22:28 +0100)
committerDavid van Moolenbroek <david@minix3.org>
Sat, 11 Feb 2012 14:16:22 +0000 (15:16 +0100)
lib/libblockdriver/const.h
lib/libblockdriver/driver_mt.c

index 941c4391c0a0fbc84104b6c2b765a1e006bbbe0c..5f475e3e9f12806dc24a23d0a22bc5b1e4c751b4 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef _BLOCKDRIVER_CONST_H
 #define _BLOCKDRIVER_CONST_H
 
+/* Thread stack size. */
+#define STACK_SIZE     8192
+
 /* Maximum number of devices supported. */
 #define MAX_DEVICES    32
 
index 0ec53e31efa0d0bd2f2eef4035600cc17bc9e372..b3c686c142fca39cdebf5d87562cfcee2874a7bf 100644 (file)
@@ -212,6 +212,7 @@ PRIVATE void master_create_worker(worker_t *wp, worker_id_t worker_id,
 {
 /* Start a new worker thread.
  */
+  mthread_attr_t attr;
   int r;
 
   wp->device_id = device_id;
@@ -221,8 +222,15 @@ PRIVATE void master_create_worker(worker_t *wp, worker_id_t worker_id,
   /* Initialize synchronization primitives. */
   mthread_event_init(&wp->sleep_event);
 
-  r = mthread_create(&wp->mthread, NULL /*attr*/, worker_thread, (void *) wp);
+  r = mthread_attr_init(&attr);
+  if (r != 0)
+       panic("blockdriver_mt: could not initialize attributes (%d)", r);
+
+  r = mthread_attr_setstacksize(&attr, STACK_SIZE);
+  if (r != 0)
+       panic("blockdriver_mt: could not set stack size (%d)", r);
 
+  r = mthread_create(&wp->mthread, &attr, worker_thread, (void *) wp);
   if (r != 0)
        panic("blockdriver_mt: could not start thread %d (%d)", worker_id, r);
 }