* doubled up to MAX_SPAWN_RATE, and reset only when a cycle goes by
* without the need to spawn.
*/
- int *idle_spawn_rate;
+ int *idle_spawn_rate,
+ idle_spawn_rate_len;
#ifndef MAX_SPAWN_RATE
#define MAX_SPAWN_RATE (32)
#endif
all_buckets[i].listeners = listen_buckets[i];
}
+ if (retained->idle_spawn_rate_len < num_buckets) {
+ int *new_ptr, new_len;
+ new_len = retained->idle_spawn_rate_len * 2;
+ if (new_len < num_buckets) {
+ new_len = num_buckets;
+ }
+ new_ptr = (int *)apr_palloc(ap_pglobal, new_len * sizeof(int));
+ memcpy(new_ptr, retained->idle_spawn_rate,
+ retained->idle_spawn_rate_len * sizeof(int));
+ for (i = retained->idle_spawn_rate_len; i < new_len; i++) {
+ new_ptr[i] = 1;
+ }
+ retained->idle_spawn_rate_len = new_len;
+ retained->idle_spawn_rate = new_ptr;
+ }
+
/* for skiplist */
srand((unsigned int)apr_time_now());
return OK;
int no_detach, debug, foreground;
apr_status_t rv;
const char *userdata_key = "mpm_event_module";
- int i;
mpm_state = AP_MPMQ_STARTING;
"atomics not working as expected - add32 of negative number");
return HTTP_INTERNAL_SERVER_ERROR;
}
- retained->idle_spawn_rate = apr_palloc(pconf, sizeof(int) * num_buckets);
- for (i = 0; i< num_buckets; i++) {
- retained->idle_spawn_rate[i] = 1;
- }
+
rv = apr_pollset_create(&event_pollset, 1, plog,
APR_POLLSET_THREADSAFE | APR_POLLSET_NOCOPY);
if (rv != APR_SUCCESS) {
* doubled up to MAX_SPAWN_RATE, and reset only when a cycle goes by
* without the need to spawn.
*/
- int *idle_spawn_rate;
+ int *idle_spawn_rate,
+ idle_spawn_rate_len;
#ifndef MAX_SPAWN_RATE
#define MAX_SPAWN_RATE (32)
#endif
all_buckets[i].listeners = listen_buckets[i];
}
+ if (retained->idle_spawn_rate_len < num_buckets) {
+ int *new_ptr, new_len;
+ new_len = retained->idle_spawn_rate_len * 2;
+ if (new_len < num_buckets) {
+ new_len = num_buckets;
+ }
+ new_ptr = (int *)apr_palloc(ap_pglobal, new_len * sizeof(int));
+ memcpy(new_ptr, retained->idle_spawn_rate,
+ retained->idle_spawn_rate_len * sizeof(int));
+ for (i = retained->idle_spawn_rate_len; i < new_len; i++) {
+ new_ptr[i] = 1;
+ }
+ retained->idle_spawn_rate_len = new_len;
+ retained->idle_spawn_rate = new_ptr;
+ }
+
/* for skiplist */
srand((unsigned int)apr_time_now());
return OK;
int no_detach, debug, foreground;
apr_status_t rv;
const char *userdata_key = "mpm_eventopt_module";
- int i;
mpm_state = AP_MPMQ_STARTING;
"atomics not working as expected - add32 of negative number");
return HTTP_INTERNAL_SERVER_ERROR;
}
- retained->idle_spawn_rate = apr_palloc(pconf, sizeof(int) * num_buckets);
- for (i = 0; i< num_buckets; i++) {
- retained->idle_spawn_rate[i] = 1;
- }
+
rv = apr_pollset_create(&event_pollset, 1, plog,
APR_POLLSET_WAKEABLE|APR_POLLSET_NOCOPY);
if (rv != APR_SUCCESS) {
* doubled up to MAX_SPAWN_RATE, and reset only when a cycle goes by
* without the need to spawn.
*/
- int *idle_spawn_rate;
+ int *idle_spawn_rate,
+ idle_spawn_rate_len;
#ifndef MAX_SPAWN_RATE
#define MAX_SPAWN_RATE (32)
#endif
all_buckets[i].listeners = listen_buckets[i];
}
+ if (retained->idle_spawn_rate_len < num_buckets) {
+ int *new_ptr, new_len;
+ new_len = retained->idle_spawn_rate_len * 2;
+ if (new_len < num_buckets) {
+ new_len = num_buckets;
+ }
+ new_ptr = (int *)apr_palloc(ap_pglobal, new_len * sizeof(int));
+ memcpy(new_ptr, retained->idle_spawn_rate,
+ retained->idle_spawn_rate_len * sizeof(int));
+ for (i = retained->idle_spawn_rate_len; i < new_len; i++) {
+ new_ptr[i] = 1;
+ }
+ retained->idle_spawn_rate_len = new_len;
+ retained->idle_spawn_rate = new_ptr;
+ }
+
return OK;
}
int no_detach, debug, foreground;
apr_status_t rv;
const char *userdata_key = "mpm_worker_module";
- int i;
mpm_state = AP_MPMQ_STARTING;
return HTTP_INTERNAL_SERVER_ERROR;
}
}
- retained->idle_spawn_rate = apr_palloc(pconf, sizeof(int) * num_buckets);
- for (i = 0; i< num_buckets; i++) {
- retained->idle_spawn_rate[i] = 1;
- }
}
parent_pid = ap_my_pid = getpid();