[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] xs: set read_thread stacksize



xs_watch() creates a thread to wake watchers using default attributes. The
stacksize can be quite large (8 MB on Linux), applications that link against
xenstore end up having a larger memory footprint than necessary.

Signed-off-by: Simon Rowe <simon.rowe@xxxxxxxxxxxxx>

diff -r 53e0571f94e4 -r 0cf61ed6ce86 tools/xenstore/xs.c
--- a/tools/xenstore/xs.c       Fri May 25 08:21:25 2012 +0100
+++ b/tools/xenstore/xs.c       Tue May 29 16:45:03 2012 +0100
@@ -705,11 +705,31 @@ bool xs_watch(struct xs_handle *h, const
        /* We dynamically create a reader thread on demand. */
        mutex_lock(&h->request_mutex);
        if (!h->read_thr_exists) {
+#if _POSIX_THREAD_ATTR_STACKSIZE > 0
+               pthread_attr_t attr;
+
+               if (pthread_attr_init(&attr) != 0) {
+                       mutex_unlock(&h->request_mutex);
+                       return false;
+               }
+               if (pthread_attr_setstacksize(&attr, 16 * 1024) != 0) {
+                       pthread_attr_destroy(&attr);
+                       mutex_unlock(&h->request_mutex);
+                       return false;
+               }
+
+               if (pthread_create(&h->read_thr, &attr, read_thread, h) != 0) {
+                       pthread_attr_destroy(&attr);
+#else
                if (pthread_create(&h->read_thr, NULL, read_thread, h) != 0) {
+#endif
                        mutex_unlock(&h->request_mutex);
                        return false;
                }
                h->read_thr_exists = 1;
+#if _POSIX_THREAD_ATTR_STACKSIZE > 0
+               pthread_attr_destroy(&attr);
+#endif
        }
        mutex_unlock(&h->request_mutex);
 #endif

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.