summaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | Merge branch 'master' of ssh://paulo@80.177.246.130/git/quagga.euro-ix into ↵paulo2009-12-101-2/+3
| |\ \ \ \ | | | | | | | | | | | | | | | | | | pthreads
| * | | | | Stop recursive lock checking assertpaulo2009-12-103-59/+70
| | | | | |
* | | | | | New access functions for mqueue_blocks & use qpthreads_enable.Chris Hall (GMCH)2009-12-102-92/+273
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Functions to set and get all user accessable parts of an mqueue_block are now provided. Uses the qpthreads_enabled flag to allow mqueues to work (though in a limited fashion) when pthreads are not enabled.
* | | | | | Introduced qpthreads_enabled flag in lib/qpthreadsChris Hall (GMCH)2009-12-102-99/+296
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This supports running without pthreads, but with code that is made thread-safe. A Big Switch -- qpthreads_enabled -- enables or disables all pthread functions. When disabled, all mutex calls become NOPs.
* | | | | | Merge branch 'master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-101-2/+3
|\ \ \ \ \ \ | | |_|_|/ / | |/| | | |
| * | | | | Fix reaming of empty symbol table -- lib/symtab.cChris Hall (GMCH)2009-12-101-2/+3
| | |_|/ / | |/| | |
* | | | | Merge branch 'master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-101-6/+9
|\| | | |
| * | | | Allow orphan symbols to be unset -- lib/symtab.cChris Hall (GMCH)2009-12-101-6/+9
| | |/ / | |/| | | | | | | | | | Improved version.
* | | | Merge branch 'master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-101-2/+3
|\| | | | |/ / |/| |
| * | Allow orphan symbols to be unset -- lib/symtab.cChris Hall (GMCH)2009-12-101-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | May not set orphan symbol values to anything meaningful, but must be allowed to unset an orphan value (which is already unset) so that when reaming a symbol table ordinary value delete/unset functions can be called. So fixed the assert which was disallowing all value changes for orphans, in symbol_set_value().
| * | Merge remote branch 'quagga/master' of /git/quagga.euro-ixChris Hall (GMCH)2009-12-095-59/+34
| |\|
* | | Merge remote branch 'quagga/master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-095-59/+34
|\ \ \ | | |/ | |/|
| * | lib: move check_bit into prefix common codeStephen Hemminger2009-12-092-31/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make one version of check prefix bit, and put it inline with proper prototype. This gets rid of some macro's and also some assert() that can never happen on a non-broken compiler. * bgpd/bgp_table.c * CHECK_BIT(): sayonara * check_bit(): sayonara * SET_LINK(): sayonara * set_link(): make use of prefix_bit() instead of check_bit() * bgp_node_match(): idem * bgp_node_lookup(): idem * bgp_node_get(): idem * lib/prefix.h * prefix_bit(): new inline version of check_bit() * lib/table.c * CHECK_BIT(): sayonara * check_bit(): sayonara * SET_LINK(): sayonara * set_link(): make use of prefix_bit() instead of check_bit() * route_node_match(): idem * route_node_lookup(): idem * route_node_get(): idem * ospf6d/ospf6_lsdb.c * CHECK_BIT(): sayonara * ospf6_lsdb_lookup_next(): make use of prefix_bit() instead of CHECK_BIT() * ospf6_lsdb_type_router_head(): idem * ospf6_lsdb_type_head(): idem * ospf6d/ospf6_route.c * CHECK_BIT(): sayonara * ospf6_route_match_head() make use of prefix_bit() instead of * CHECK_BIT()
| * | lib: fix warning on little endianStephen Hemminger2009-12-091-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | * md5.c * md5_calc(): If building on little endian then X will be 'const uint32_t' which causes compiler warning in code that never gets used. Just move the endif to make sure code is not checked.
| * | lib: make match functions take const argsStephen Hemminger2009-12-082-14/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | * table.c: general type safety and compiler help: * maskbit[]: become const * route_node_match(): take const args * route_node_match_ipv4(): idem * route_node_match_ipv6(): idem * check_bit(): idem, plus adjust local vars typing
| * | lib: remove unused function: route_dump_node()Denis Ovsienko2009-12-071-17/+0
| | |
| * | lib: log source of vty connections (bug #566)heasley2009-12-071-0/+6
| | | | | | | | | | | | heasley: I've used this for a while to track usage.
* | | Fix qps_pselect() so that zeroises results, not enabled.Chris Hall (GMCH)2009-12-091-2/+2
| | |
* | | Ensure all timeouts are timeout times in qtime_mono_t.Chris Hall (GMCH)2009-12-0912-209/+202
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduced separate types for qtime_mono_t and qtime_real_t, to distinguish the time base of a given value. Revised all users of timeouts so that they are all expressed as qtime_mono_t values, so are all Quagga monotonic time based. Revised qpt_cond_timedwait() so that all condition variables use the same timebase (CLOCK_MONOTONIC if available, by default). Now all timeout times are qtime_mono_t, and are converted to whatever the condition variable is set to, if necessary. Added explicit timeout to mqueue. Fixed qps_pselect() to zeroise result vectors if no fds are reported pending -- seems the O/S does not do this.
* | | Fixed -ve return from qps_pselect. Fixed calls of qps_enable_mode - usespaulo2009-12-092-10/+6
| | | | | | | | | | | | mnum, not mbits.
* | | Changed timeout handling in qpn_start -- lib/qpnexus.cChris Hall (GMCH)2009-12-091-3/+2
| | |
* | | Bug fix in qps_selection_validate(), lib/qpselect.cChris Hall (GMCH)2009-12-091-33/+132
| | | | | | | | | | | | | | | | | | Also, added testing for qps_make_super_set_map() to simulate wide range of little-/big-endian word sizes and forwards/backwards bit numbering.
* | | Fix timeouts in nexus, fix LOCK in vtypaulo2009-12-093-9/+13
| | |
* | | Fixes to get as far as creating the thread and calling qps_pselectpaulo2009-12-094-31/+26
| | |
* | | Bug fix in qps_make_super_set_map(), lib/qpselect.cChris Hall (GMCH)2009-12-091-2/+2
| | |
* | | Add qps_selection_ream() to lib/qpselect.cChris Hall (GMCH)2009-12-082-200/+449
| | | | | | | | | | | | Tidied up and implemented qps_selection_validate() as a debug aid.
* | | Nexus handling.paulo2009-12-082-0/+208
| | |
* | | Wired up the CLI thread with new qpnexus type. Still work in progress.paulo2009-12-084-85/+351
| | | | | | | | | | | | Needs debugging.
* | | Fixes to lib/qtime.c and lib/qtimers.hChris Hall (GMCH)2009-12-082-5/+5
| | | | | | | | | | | | Needs to use lldiv in qtime.c on 32bit machine.
* | | Merge branch 'pthreads' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-084-208/+512
|\ \ \
| * | | Make vty and log thread safe under single mutex.paulo2009-12-074-208/+512
| | | |
* | | | Improved lib/qt_craft_monotonic() handling of overflow.Chris Hall (GMCH)2009-12-082-40/+106
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Improved the arithmetic and changed code to deal with wrap around only if clock_t is 32-bits (and not to compile if it is less !). Updated documentation.
* | | | Added qtimer_pile_top_time() to lib/qtimers.cChris Hall (GMCH)2009-12-084-112/+177
|/ / / | | | | | | | | | | | | | | | | | | | | | For use when preparing for pselect or other timed wait. Simplified the handling of pending unsets. Tidied up in heap.c & .h.
* | | Fixed qpt_mutex_unlock() (debug version).Chris Hall (GMCH)2009-12-071-2/+2
| | |
* | | Enabled qpt_mutex_recursive in lib/qpthreads.Chris Hall (GMCH)2009-12-072-17/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | This allows mutexes to be initialised as recursive. Required correctly placed setting of _GNU_SOURCE (for gcc). It is assumed that "config.h" will enable the required pthreads features -- which are now documented in lib/qpthread.c.
* | | Initial commit for lib/qpselect.c & .h and lib/qtimers.c & .hChris Hall (GMCH)2009-12-066-2/+1665
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lib/qpselect supports data structure to multiplex between many file descriptors using pselect(). lib/qtimers supports data structures to run multiple timers. Also affected: lib/Makefile.am -- to add the new files lib/memtypes.c -- to add further memory types for the above
* | | Updates to lib/qtime.c & .hChris Hall (GMCH)2009-12-062-12/+66
| | | | | | | | | | | | | | | | | | | | | Added conversion routines for CLOCK_REALTIME/timeofday to/from monotonic clock -- so can set timers to actual time, if required. Added confirms and tidied up documentation.
* | | Updates to lib/qpthreads.c & .hChris Hall (GMCH)2009-12-062-3/+18
| | | | | | | | | | | | | | | | | | Added qpt_thread_self(). Initialised output sigset_t before setting it in qpt_thread_sigmask().
* | | Updates after code review: lib/heap.c & .h lib/vector.c & .hChris Hall (GMCH)2009-12-064-127/+180
| | | | | | | | | | | | | | | | | | | | | Added vector_unset_item() & recast vector_unset(). Added heap_pop_push_item() and made a number of simple operations Inline functions.
* | | Initial commit of lib/mqueue.c & .hChris Hall (GMCH)2009-12-035-4/+716
| | | | | | | | | | | | | | | Adds message queue structure to manage the passing of messages between qpthreads.
* | | Add signal functions to lib/qpthreads.cChris Hall (GMCH)2009-12-032-0/+60
| | | | | | | | | | | | Adding qpt_thread_sigmask() and qpt_thread_signal().
* | | Allow floating argument for QTIME(s) in lib/qtime.hChris Hall (GMCH)2009-12-031-1/+2
| | | | | | | | | | | | | | | Changed casts around so that the seconds argument can be a floating point value. So that, in particular, QTIME(2.33) works.
* | | Added zlog_abort functions. Changed pthread mutes to qpthread mutexespaulo2009-12-035-115/+183
| | |
* | | Merge branch 'pthreads' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-029-234/+688
|\ \ \
| * | | Fix nested LOCK bugpaulo2009-12-012-9/+35
| | | |
| * | | Fix raise_count in zprivs_change_caps HAVE_LCAPS casepaulo2009-12-011-9/+18
| | | |
| * | | log_r.h no longer needed. It was invented incase we needed a separatepaulo2009-11-301-32/+0
| | | | | | | | | | | | | | | | pthread safe interface for logging. log.h is that interface.
| * | | Make logging (lib.c) and privileges (privs.c) pthread safepaulo2009-11-308-199/+650
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lib.c: use a mutex to protect all public methods. Replaced code in command.c etc that modified zlog_default directly with interlocked getters and setters. Requires that vty_log in vty.c handles its own pthread safety TBA. privs.c: use a mutex to protect all public methods. Counts RAISE and LOWER so that privilege stays RAISED until all pthreads have lowered. Improved messages in test-privs.c
* | | | Pthreads infrastructure -- initial commitChris Hall (GMCH)2009-12-029-5/+1818
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New files: lib/qpthreads.c & .h Encapsulates the Pthreads facilities to be used in Quagga. Implicitly documents the sub-set of Pthreads being used. Provides error checking for a number of functions which may return errors, but are not generally expected to and for whom an error is treated as fatal. Could be modified to "null out" the use of Pthreads. New files: lib/qtime.c & .h Defines a 64-bit integer time value which is a lot easier to handle than the usual timespec and timeval structures. (C99 requires a 64-bit integer.) Provides front ends for gettimeofday() & clock_gettime() which return 64-bit time value. Also conversions to and from timespec and timeval. Provides a monotonic clock for when CLOCK_MONOTONIC is not available. (This is based on code from Joakim Tjernlund.) New files: lib/heap.c & .h Implements a heap data structure closely allied to the vector. This will be used for timer handling. Modified: lib/memtypes.c New memory types for qpthreads structures and for the heap. Modified: lib/zassert.h Added explicit "passert" == assert which is not subject to NDEBUG. Added explicit "nassert" == assert which is subject to NDEBUG. Added zabort, zabort_errno and zabbort_err for when something has gone fatally wrong. (Require changes to lib/log.c which are TBD.)
* | | | Merge branch 'master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-021-50/+37
|\ \ \ \ | |/ / / |/| | / | | |/ | |/|