summaryrefslogtreecommitdiff
path: root/www/kannel/files/patch-af
blob: f4a5ab082c6520bff8b398b4840be944a50889c3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
--- gwlib/gwthread-pthread.c.orig	Thu Aug 12 19:53:30 2004
+++ gwlib/gwthread-pthread.c	Mon Dec 20 00:53:57 2004
@@ -125,6 +125,11 @@
 static pthread_key_t tsd_key;
 
 static pthread_mutex_t threadtable_lock;
+/*
+ * Thread creation parameters.
+ */
+static pthread_attr_t thread_attr;
+#define MIN_THREAD_STACK_SIZE (256 * 1024)
 
 static void lock(void)
 {
@@ -263,6 +268,7 @@
 {
     int ret;
     int i;
+    int stack_size;
 
     pthread_mutex_init(&threadtable_lock, NULL);
 
@@ -275,6 +281,13 @@
         threadtable[i] = NULL;
     }
     active_threads = 0;
+/*
+ * Make sure that thread stack is large enough.
+ */
+    pthread_attr_init(&thread_attr);
+    pthread_attr_getstacksize(&thread_attr, &stack_size);
+    if (stack_size < MIN_THREAD_STACK_SIZE)
+            pthread_attr_setstacksize(&thread_attr, MIN_THREAD_STACK_SIZE);
 
     create_threadinfo_main();
 }
@@ -443,7 +456,7 @@
         return -1;
     }
 
-    ret = pthread_create(&id, NULL, &new_thread, p);
+    ret = pthread_create(&id, &thread_attr, &new_thread, p);
     if (ret != 0) {
         unlock();
         error(ret, "Could not create new thread.");