Merge remote-tracking branch 'origin/patches-2.0'

This commit is contained in:
Nick Mathewson 2011-08-24 16:17:56 -04:00
commit 2cbe115cbc
3 changed files with 8 additions and 2 deletions

View File

@ -44,6 +44,7 @@
#include "bufferevent-internal.h" #include "bufferevent-internal.h"
#include "mm-internal.h" #include "mm-internal.h"
#include "util-internal.h" #include "util-internal.h"
#include "event-internal.h"
int int
ev_token_bucket_init(struct ev_token_bucket *bucket, ev_token_bucket_init(struct ev_token_bucket *bucket,
@ -166,7 +167,8 @@ ev_token_bucket_cfg_new(size_t read_rate, size_t read_burst,
r->read_maximum = read_burst; r->read_maximum = read_burst;
r->write_maximum = write_burst; r->write_maximum = write_burst;
memcpy(&r->tick_timeout, tick_len, sizeof(struct timeval)); memcpy(&r->tick_timeout, tick_len, sizeof(struct timeval));
r->msec_per_tick = (tick_len->tv_sec * 1000) + tick_len->tv_usec/1000; r->msec_per_tick = (tick_len->tv_sec * 1000) +
(tick_len->tv_usec & COMMON_TIMEOUT_MICROSECONDS_MASK)/1000;
return r; return r;
} }
@ -519,6 +521,7 @@ _bev_group_refill_callback(evutil_socket_t fd, short what, void *arg)
event_base_gettimeofday_cached(event_get_base(&g->master_refill_event), &now); event_base_gettimeofday_cached(event_get_base(&g->master_refill_event), &now);
LOCK_GROUP(g); LOCK_GROUP(g);
tick = ev_token_bucket_get_tick(&now, &g->rate_limit_cfg); tick = ev_token_bucket_get_tick(&now, &g->rate_limit_cfg);
ev_token_bucket_update(&g->rate_limit, &g->rate_limit_cfg, tick); ev_token_bucket_update(&g->rate_limit, &g->rate_limit_cfg, tick);

View File

@ -148,6 +148,9 @@ struct common_timeout_list {
struct event_base *base; struct event_base *base;
}; };
/** Mask used to get the real tv_usec value from a common timeout. */
#define COMMON_TIMEOUT_MICROSECONDS_MASK 0x000fffff
struct event_change; struct event_change;
/* List of 'changes' since the last call to eventop.dispatch. Only maintained /* List of 'changes' since the last call to eventop.dispatch. Only maintained

View File

@ -1104,7 +1104,7 @@ event_signal_closure(struct event_base *base, struct event *ev)
* of index into the event_base's aray of common timeouts. * of index into the event_base's aray of common timeouts.
*/ */
#define MICROSECONDS_MASK 0x000fffff #define MICROSECONDS_MASK COMMON_TIMEOUT_MICROSECONDS_MASK
#define COMMON_TIMEOUT_IDX_MASK 0x0ff00000 #define COMMON_TIMEOUT_IDX_MASK 0x0ff00000
#define COMMON_TIMEOUT_IDX_SHIFT 20 #define COMMON_TIMEOUT_IDX_SHIFT 20
#define COMMON_TIMEOUT_MASK 0xf0000000 #define COMMON_TIMEOUT_MASK 0xf0000000