You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Aaron Bannert <aa...@ebuilt.com> on 2001/07/24 02:53:06 UTC
[PATCH] updates to httpd to work with the new APR thread API
And now the updates to httpd to get it working under httpd [cross posted
to new-httpd because I'll need someone with httpd commit access to update
this once the changes to APR have been commited].
This patch is just the bare minimum to get httpd working with the
new thread API. Changes affected the threaded and perchild MPMs. I'll
revisit both of these MPMs once I have a better idea what can change to
take advantage of the new API (it looks like we are using static/global
variables to pass the parent pool around to the threads...), but for
now this keeps up to date with APR and changes no real functionality.
-aaron
(patch follows quote)
On Mon, Jul 23, 2001 at 05:28:14PM -0700, Aaron Bannert wrote:
> Ok here goes again, hopefully third try's a charm.
>
>
> This patch updates the APR thread API as discussed on the list
> over the last week or so. Basicly, the following changes were made
> and are included in this patch:
>
> - worker_function prototype (apr_thread_start_t) now takes two parameters,
> the apr private data (apr_thread_t*) and the application private
> data (void*).
>
> - Applications' worker_thread() routines may now use the apr_thread_pool_get
> routines to access the pool. These are implemented using the
> APR_POOL_*_ACCESSOR() macros.
>
>
> This patch was tested on UNIX. For the sake of the reviewer, I will followup
> this messages with patches that update testthread.c and another that
> will implement the changes for httpd. Also, once this gets commited,
> I have a fix for apr_thread_join() that needs to get commited. :)
Index: server/mpm/perchild/perchild.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/perchild/perchild.c,v
retrieving revision 1.71
diff -u -r1.71 perchild.c
--- server/mpm/perchild/perchild.c 2001/07/18 20:45:35 1.71
+++ server/mpm/perchild/perchild.c 2001/07/24 00:40:46
@@ -512,7 +512,7 @@
}
}
-static void *worker_thread(void *);
+static void *worker_thread(apr_thread_t *, void *);
/* Starts a thread as long as we're below max_threads */
static int start_thread(void)
@@ -579,7 +579,7 @@
/* idle_thread_count should be incremented before starting a worker_thread */
-static void *worker_thread(void *arg)
+static void *worker_thread(apr_thread_t *thd, void *arg)
{
apr_socket_t *csd = NULL;
apr_pool_t *tpool; /* Pool for this thread */
Index: server/mpm/threaded/threaded.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/server/mpm/threaded/threaded.c,v
retrieving revision 1.46
diff -u -r1.46 threaded.c
--- server/mpm/threaded/threaded.c 2001/07/18 20:45:36 1.46
+++ server/mpm/threaded/threaded.c 2001/07/24 00:40:47
@@ -520,7 +520,7 @@
apr_lock_release(pipe_of_death_mutex);
}
-static void * worker_thread(void * dummy)
+static void * worker_thread(apr_thread_t *thd, void * dummy)
{
proc_info * ti = dummy;
int process_slot = ti->pid;
@@ -671,7 +671,7 @@
return 0;
}
-static void *start_threads(void * dummy)
+static void *start_threads(apr_thread_t *thd, void * dummy)
{
thread_starter *ts = dummy;
apr_thread_t **threads = ts->threads;