diff options
author | Chris Hall <GMCH@hestia.halldom.com> | 2010-01-04 15:09:29 +0000 |
---|---|---|
committer | Chris Hall <GMCH@hestia.halldom.com> | 2010-01-04 15:09:29 +0000 |
commit | 6746ef8cd683a5e0afa57a5fc90a28f533be68be (patch) | |
tree | d7608f3253abe75208db6c789752dd91840e1fcc /lib/mqueue.h | |
parent | 152acaa5615afcb6d5a06aaed74d2fdd4b5a1233 (diff) | |
download | quagga-6746ef8cd683a5e0afa57a5fc90a28f533be68be.tar.bz2 quagga-6746ef8cd683a5e0afa57a5fc90a28f533be68be.tar.xz |
Initial commit for bgp_engine branch -- seeding new files...
On branch bgp_engine
modified: .gitignore
modified: bgpd/Makefile.am
new file: bgpd/bgp.h
new file: bgpd/bgp_common.c
new file: bgpd/bgp_common.h
new file: bgpd/bgp_connection.c
new file: bgpd/bgp_connection.h
modified: bgpd/bgp_debug.c
new file: bgpd/bgp_engine.c
new file: bgpd/bgp_engine.h
modified: bgpd/bgp_fsm.c
modified: bgpd/bgp_fsm.h
modified: bgpd/bgp_network.c
modified: bgpd/bgp_network.h
new file: bgpd/bgp_notification.c
new file: bgpd/bgp_notification.h
modified: bgpd/bgp_open.c
new file: bgpd/bgp_open_state.c
new file: bgpd/bgp_open_state.h
modified: bgpd/bgp_packet.c
new file: bgpd/bgp_peer.c
new file: bgpd/bgp_peer.h
modified: bgpd/bgp_route.c
new file: bgpd/bgp_session.c
new file: bgpd/bgp_session.h
modified: bgpd/bgp_vty.c
modified: bgpd/bgp_zebra.c
modified: bgpd/bgpd.c
modified: bgpd/bgpd.h
modified: lib/Makefile.am
modified: lib/memtypes.c
modified: lib/mqueue.c
modified: lib/mqueue.h
new file: lib/qafi_safi.h
modified: lib/qpselect.c
modified: lib/qpselect.h
modified: lib/qpthreads.c
modified: lib/qpthreads.h
modified: lib/sockopt.c
modified: lib/sockunion.c
modified: lib/sockunion.h
modified: lib/stream.c
modified: lib/stream.h
modified: lib/symtab.h
modified: lib/zebra.h
Diffstat (limited to 'lib/mqueue.h')
-rw-r--r-- | lib/mqueue.h | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/lib/mqueue.h b/lib/mqueue.h index 7d649efe..fb28eea1 100644 --- a/lib/mqueue.h +++ b/lib/mqueue.h @@ -50,7 +50,7 @@ typedef union enum mqb_flag { - mqb_revoke = 0, + mqb_destroy = 0, mqb_action = 1 } ; @@ -122,37 +122,60 @@ struct mqueue_queue } kick ; } ; +typedef struct mqueue_local_queue* mqueue_local_queue ; + +struct mqueue_local_queue +{ + mqueue_block head ; /* NULL => list is empty */ + mqueue_block tail ; /* last message (if not empty) */ +} ; + /*============================================================================== * Functions */ -void +extern void mqueue_initialise(void) ; -mqueue_queue +extern mqueue_queue mqueue_init_new(mqueue_queue mq, enum mqueue_queue_type type) ; -void +extern mqueue_local_queue +mqueue_local_init_new(mqueue_local_queue lmq) ; + +extern mqueue_local_queue +mqueue_local_reset(mqueue_local_queue lmq, int free_structure) ; + +#define mqueue_local_reset_keep(lmq) mqueue_local_reset(lmq, 0) +#define mqueue_local_reset_free(lmq) mqueue_local_reset(lmq, 1) + +extern void mqueue_set_timeout_interval(mqueue_queue mq, qtime_t interval) ; -mqueue_thread_signal +extern mqueue_thread_signal mqueue_thread_signal_init(mqueue_thread_signal mqt, qpt_thread_t thread, int signum) ; -mqueue_block +extern mqueue_block mqb_init_new(mqueue_block mqb, mqueue_action action, void* arg0) ; -void +extern void mqb_free(mqueue_block mqb) ; -void +extern void mqueue_enqueue(mqueue_queue mq, mqueue_block mqb, int priority) ; -mqueue_block +extern mqueue_block mqueue_dequeue(mqueue_queue mq, int wait, void* arg) ; -int +extern int mqueue_done_waiting(mqueue_queue mq, mqueue_thread_signal mtsig) ; +extern void +mqueue_local_enqueue(mqueue_local_queue lmq, mqueue_block mqb) ; + +extern mqueue_block +mqueue_local_dequeue(mqueue_local_queue lmq) ; + /*============================================================================== * Access functions for mqueue_block fields -- mqb_set_xxx/mqb_get_xxx * @@ -217,6 +240,18 @@ mqb_dispatch(mqueue_block mqb, mqb_flag_t flag) mqb->action(mqb, flag) ; } ; +Inline void +mqb_dispatch_action(mqueue_block mqb) +{ + mqb->action(mqb, mqb_action) ; +} ; + +Inline void +mqb_dispatch_destroy(mqueue_block mqb) +{ + mqb->action(mqb, mqb_destroy) ; +} ; + Inline void* mqb_get_arg0(mqueue_block mqb) { |