[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |