ipc/chromium/src/third_party/libevent/evmap-internal.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 /*
michael@0 2 * Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
michael@0 3 *
michael@0 4 * Redistribution and use in source and binary forms, with or without
michael@0 5 * modification, are permitted provided that the following conditions
michael@0 6 * are met:
michael@0 7 * 1. Redistributions of source code must retain the above copyright
michael@0 8 * notice, this list of conditions and the following disclaimer.
michael@0 9 * 2. Redistributions in binary form must reproduce the above copyright
michael@0 10 * notice, this list of conditions and the following disclaimer in the
michael@0 11 * documentation and/or other materials provided with the distribution.
michael@0 12 * 3. The name of the author may not be used to endorse or promote products
michael@0 13 * derived from this software without specific prior written permission.
michael@0 14 *
michael@0 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
michael@0 16 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
michael@0 17 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@0 18 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
michael@0 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
michael@0 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
michael@0 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
michael@0 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
michael@0 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
michael@0 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
michael@0 25 */
michael@0 26 #ifndef _EVMAP_H_
michael@0 27 #define _EVMAP_H_
michael@0 28
michael@0 29 /** @file evmap-internal.h
michael@0 30 *
michael@0 31 * An event_map is a utility structure to map each fd or signal to zero or
michael@0 32 * more events. Functions to manipulate event_maps should only be used from
michael@0 33 * inside libevent. They generally need to hold the lock on the corresponding
michael@0 34 * event_base.
michael@0 35 **/
michael@0 36
michael@0 37 struct event_base;
michael@0 38 struct event;
michael@0 39
michael@0 40 /** Initialize an event_map for use.
michael@0 41 */
michael@0 42 void evmap_io_initmap(struct event_io_map* ctx);
michael@0 43 void evmap_signal_initmap(struct event_signal_map* ctx);
michael@0 44
michael@0 45 /** Remove all entries from an event_map.
michael@0 46
michael@0 47 @param ctx the map to clear.
michael@0 48 */
michael@0 49 void evmap_io_clear(struct event_io_map* ctx);
michael@0 50 void evmap_signal_clear(struct event_signal_map* ctx);
michael@0 51
michael@0 52 /** Add an IO event (some combination of EV_READ or EV_WRITE) to an
michael@0 53 event_base's list of events on a given file descriptor, and tell the
michael@0 54 underlying eventops about the fd if its state has changed.
michael@0 55
michael@0 56 Requires that ev is not already added.
michael@0 57
michael@0 58 @param base the event_base to operate on.
michael@0 59 @param fd the file descriptor corresponding to ev.
michael@0 60 @param ev the event to add.
michael@0 61 */
michael@0 62 int evmap_io_add(struct event_base *base, evutil_socket_t fd, struct event *ev);
michael@0 63 /** Remove an IO event (some combination of EV_READ or EV_WRITE) to an
michael@0 64 event_base's list of events on a given file descriptor, and tell the
michael@0 65 underlying eventops about the fd if its state has changed.
michael@0 66
michael@0 67 @param base the event_base to operate on.
michael@0 68 @param fd the file descriptor corresponding to ev.
michael@0 69 @param ev the event to remove.
michael@0 70 */
michael@0 71 int evmap_io_del(struct event_base *base, evutil_socket_t fd, struct event *ev);
michael@0 72 /** Active the set of events waiting on an event_base for a given fd.
michael@0 73
michael@0 74 @param base the event_base to operate on.
michael@0 75 @param fd the file descriptor that has become active.
michael@0 76 @param events a bitmask of EV_READ|EV_WRITE|EV_ET.
michael@0 77 */
michael@0 78 void evmap_io_active(struct event_base *base, evutil_socket_t fd, short events);
michael@0 79
michael@0 80
michael@0 81 /* These functions behave in the same way as evmap_io_*, except they work on
michael@0 82 * signals rather than fds. signals use a linear map everywhere; fds use
michael@0 83 * either a linear map or a hashtable. */
michael@0 84 int evmap_signal_add(struct event_base *base, int signum, struct event *ev);
michael@0 85 int evmap_signal_del(struct event_base *base, int signum, struct event *ev);
michael@0 86 void evmap_signal_active(struct event_base *base, evutil_socket_t signum, int ncalls);
michael@0 87
michael@0 88 void *evmap_io_get_fdinfo(struct event_io_map *ctx, evutil_socket_t fd);
michael@0 89
michael@0 90 void evmap_check_integrity(struct event_base *base);
michael@0 91
michael@0 92 #endif /* _EVMAP_H_ */

mercurial