Commit Graph

426 Commits (dca8e95f519ed599b72fea4e223dcd0b59dfb2d1)

Author SHA1 Message Date
Samy Al Bahra 34a5bf4266 regressions/ck_cohort: Whitespace cleanup.
12 years ago
Samy Al Bahra 676f8fed88 Merge branch 'cohort_trylock' of git://github.com/bscheinman/ck
12 years ago
Samy Al Bahra 5c90d917f7 regressions/ck_ring: More improvements and _size coverage.
12 years ago
Brendon Scheinman 3fefa3b5a3 ck_cohort: Fixed regression tests based on ck_cohort_rw changes
12 years ago
Brendon Scheinman 77ff96b15a ck_cohort_rw: Added latency and throughput benchmark regression tests
12 years ago
Brendon Scheinman 114c916fea ck_cohort_rw: Cleaned up regression files from last commit
12 years ago
Brendon Scheinman 5e1b614108 ck_cohort_rw: Initial implementation with validation test.
12 years ago
Brendon Scheinman 3c8728b214 ck_cohort: Added trylock support to cohort framework
12 years ago
Brendon Scheinman 78fbe93caa ck_cohort: fixed regression tests to match new CK_COHORT_PROTOTYPE signature
12 years ago
Brendon Scheinman ed5292546f merged changes from main ck repo
12 years ago
David Joseph 60873b9af5 Merge branch 'master' of https://github.com/sbahra/ck
12 years ago
David Joseph 9640eabba8 regressions: Fix for common alarm init.
12 years ago
David Joseph aaebc6b31b regressions: Fix for common alarm prefixes.
12 years ago
David Joseph da23134615 regressions: Fix for alarm interface.
12 years ago
David Joseph 0784be7ff0 regressions: Fix tests that use common alarm.
12 years ago
David Joseph 339a1bd639 regressions: Add prefix to common alarm interface.
12 years ago
Samy Al Bahra 7e9a020abd regressions: Add ck_pflock clean target.
12 years ago
Samy Al Bahra f6a53fd9de ck_cohort: First-cut implementation of generalized cohort interface.
12 years ago
Brendon Scheinman 5914bbe2c2 ck_cohort: Moved locks to separate cachelines in throughput test
12 years ago
Brendon Scheinman c4e3edfeac Merge branch 'master' of https://github.com/sbahra/ck into cohort
12 years ago
Brendon Scheinman 81a90e41a2 review: A couple more changes based on ck_cohort review
12 years ago
Brendon Scheinman 803073b024 interface: Made ck_cohort interface more flexible for custom types
12 years ago
Brendon Scheinman 44ea3a4688 review: First round of review changes
12 years ago
Samy Al Bahra 7ce276f5eb regressions: Add ck_pflock to make check target.
12 years ago
Samy Al Bahra 54845bb8e7 ck_pflock: Phase-fair read-write lock implementation.
12 years ago
Brendon Scheinman e06b4a26ff cleanup: Removed unnecessary code copied from ck_spinlock's throughput test
12 years ago
Brendon Scheinman 2492f16ec9 whitespace: Added missing space to usage message
12 years ago
Brendon Scheinman c6cd9e5be8 testing: Added throughput test for ck_cohort
12 years ago
Brendon Scheinman 2cb79b0658 testing: Added latency test for ck_cohort
12 years ago
Samy Al Bahra 27d454248d ck_spinlock: Add ticket lock with trylock operation.
12 years ago
Brendon Scheinman 59cc30b671 testing: ck_cohort validation
12 years ago
Brendon Scheinman d5c05309b4 cleanup: ck_cohort validation test
12 years ago
Brendon Scheinman 0a826ca93b gitignore: Removed ck_cohort validation binary from git
12 years ago
Brendon Scheinman dbe49215ac testing: Added validation test for cohorts.
12 years ago
David Joseph 10c3b22e48 Merge remote-tracking branch 'upstream/master'
12 years ago
Samy Al Bahra aef827b5a3 regressions: Remove unnecessary include.
12 years ago
Samy Al Bahra 81b9313e10 build: Fix regression introduced by MingW32 port.
12 years ago
David Joseph 8f1c31aa2c Style changes to common.h's alarm macros.
12 years ago
David Joseph 3e469d7fb5 Namespace changes to regressions/common.h (alarm).
12 years ago
Samy Al Bahra 9c298fc78b whitespace: Remove unnecessary newline.
12 years ago
David Joseph 1298a6c335 Add support for MinGW32.
12 years ago
Samy Al Bahra 9152cc7cea regressions/ck_hp_fifo_donner: This was submitted from a Windows editor.
12 years ago
Samy Al Bahra f9a484a10d build: Disclaimer that regressions are unsupported for out-of-source builds.
12 years ago
Samy Al Bahra cff7b1b21f regressions/ck_queue: Add coverage for previous regression.
12 years ago
Samy Al Bahra e517126247 regressions: Enable rdtsc for x86-32 targets.
12 years ago
Samy Al Bahra 72855320c4 regressions/ck_hs: Do not rely on ck_pr_add_64 for benchmarks.
12 years ago
Samy Al Bahra 5d1fff2e06 regressions/ck_pr: Place double tests under feature flag.
12 years ago
Samy Al Bahra 33a9222923 legal: Update Copyright statements.
12 years ago
Samy Al Bahra ca6637a57c regressions/ck_pr: Utilize _GNU_SOURCE for ck_pr_store unit test.
12 years ago
Samy Al Bahra 3293cde2d2 regressions/common: Add missing header files in common.h
12 years ago
Samy Al Bahra cb650246e2 regressions/ck_hp: Do not use empty loop body.
12 years ago
Samy Al Bahra 0866206c1f regressions/ck_ring: Add ck_ring_spmc to fast path test.
12 years ago
Samy Al Bahra fbdc512304 regressions/ck_ring: Use variable for ring size.
12 years ago
Samy Al Bahra 0631e396e0 ck_backoff: Replace ck_backoff_eb with ck_backoff_gb.
12 years ago
Samy Al Bahra d55e588ee4 regressions/ck_ring: Fix use of uninitialized data.
12 years ago
Samy Al Bahra 1f13c75a66 regressions/ck_pr_store: Add coverage for double.
12 years ago
Samy Al Bahra 56bd0b7424 regressions/ck_fifo: cache align MPMC fifo.
12 years ago
Samy Al Bahra 3f0a90813a ck_ring: Unit test coverage for ck_ring_trydequeue.
12 years ago
Samy Al Bahra 5c93ee3add regressions: Do not use ck_error for debug output.
12 years ago
Samy Al Bahra f1be36b6d2 regressions/ck_ring: Fix erroneous usage of ck_error.
12 years ago
Samy Al Bahra 6bd946d019 regressions: Add ck_error convenience function.
12 years ago
Samy Al Bahra 90745e4d60 regressions/ck_ring: Silence GCC false positives.
12 years ago
Samy Al Bahra 911909ef31 regressions/ck_ring: Add ck_ring_spmc_template unit test.
12 years ago
Samy Al Bahra b07c7808ce regressions/ck_ring: Add strict fence around barrier and cache align ring.
12 years ago
Samy Al Bahra d705e02b76 ck_ring: Replace MPMC variant with SPMC variant for starters.
12 years ago
Samy Al Bahra 8d90fa28ed regressions/ck_ring: Add missing header file.
12 years ago
Samy Al Bahra 8d8f76845b regressions/ck_ring: Add MPMC unit test.
12 years ago
Samy Al Bahra 68e6752e53 ck_ring: Due to popular request, add MPMC variants of enqueue/dequeue.
12 years ago
Samy Al Bahra cb1c72d36b ck_queue: Add CK_?LIST_MOVE operation.
12 years ago
Samy Al Bahra 533136627f regressions/ck_stack: Cache align stack.
12 years ago
Samy Al Bahra b0277346b8 regressions/ck_bytelock: Cache-align bytelock.
12 years ago
Samy Al Bahra ac50efbeaf regressions/ck_epoch: GCC 4.6.3 ignores used attribute in this case.
12 years ago
Samy Al Bahra ddfdda3649 regressions/ck_epoch: Force generation of stack dereference in ck_epoch_synchronize.
12 years ago
Samy Al Bahra 099f13a24d regressions/ck_epoch: Force generation of stack pointer.
12 years ago
Samy Al Bahra 31040a925d regressions/ck_ht: Use random get counter.
12 years ago
Samy Al Bahra ee2ae5a50f regressions/ck_epoch: Update check target.
12 years ago
Samy Al Bahra 690782aa67 ck_hs: Add hash function wrapper to maintain opacity of ck_hs_t.
12 years ago
Samy Al Bahra 43b24d9f28 regressions/ck_hs: Initialize n_state.
12 years ago
Samy Al Bahra 44b845a53a regressions/ck_hs: Use (char *) for debug output.
12 years ago
Samy Al Bahra bc7a3e5606 regressions/ck_bag: Add status around sleep.
12 years ago
Samy Al Bahra ece2895e9e ck_hs: Drop ck_hs_hash_t abstraction.
12 years ago
Samy Al Bahra adaf20b31c ck_ht: Add ck_ht_stat function.
12 years ago
Samy Al Bahra a40b724270 regressions/ck_hs: Add Makefile for benchmarks.
12 years ago
Samy Al Bahra 0f5e540afa ck_hs: Lock-free set loosely modeled after ck_ht.
12 years ago
Samy Al Bahra 67895cb87e regressions/ck_epoch: Add support for multiple writers in poll unit test.
12 years ago
Samy Al Bahra 375a9eb816 regressions/ck_epoch: Drop debug flags.
12 years ago
Samy Al Bahra 034759c3b9 regressions: Update callers to ck_epoch_call.
12 years ago
Samy Al Bahra 657c50f823 regressions/ck_epoch: Multiple writers for synchronize unit test.
12 years ago
Samy Al Bahra 5293ad2348 regressions/ck_epoch: Reduce number of poll iterations, change peak calculation in synchronize.
12 years ago
Samy Al Bahra 57104fcde7 ck_epoch: Change to epoch semantics, bump grace period to 4.
12 years ago
Samy Al Bahra ce7278140c regressions/ck_epoch: Add missing header files.
12 years ago
Samy Al Bahra c274e8bc54 ck_epoch: Major redesign and rewrite.
12 years ago
Samy Al Bahra b220e50f54 regressions/ck_pr: Disable rest of width checks on bi-endian platforms.
12 years ago
Samy Al Bahra 6961547dfe regressions/ck_pr: Remove unnecessary assignment in Makefile.
12 years ago
Samy Al Bahra 98660bf560 regressions/ck_pr: Disable width checks on bi-endian architectures.
12 years ago
Samy Al Bahra 7ebbcf55b1 regressions/ck_spinlock: Disable linux_spinlock on unsupported platforms.
12 years ago
Samy Al Bahra d72ca391f6 ck_bytelock: Switch to RMO model.
12 years ago
Samy Al Bahra bac1c1d26a regressions/ck_stack: Disable various TRYMPMC benchmarks on unsupported platforms.
12 years ago
Samy Al Bahra 3e4aa8239a regressions: Add _GNU_SOURCE to ck_backoff. Don't apply to all.
12 years ago
Samy Al Bahra f4e50d16d8 regressions: Use _GNU_SOURCE by default on Linux.
12 years ago
Samy Al Bahra 8043f52130 ck_pr: Add ck_pr_barrier for compiler barrier.
12 years ago
Samy Al Bahra 7e9a0d8751 regressions/ck_brlock: Reduce number of iterations.
12 years ago
Samy Al Bahra f8c19a89b4 regressions/ck_hp: LLVM's optimizer keeps getting the best of us.
12 years ago
Samy Al Bahra f567513f8c regressions/ck_hp: Add Donner's unit test.
12 years ago
Samy Al Bahra 3f6a3660eb regressions/ck_stack: Add trypush unit tests to check target.
12 years ago
Samy Al Bahra d454f729e0 regressions/ck_fifo: Add dependency to ck_fifo.h.
12 years ago
Samy Al Bahra 290add2e50 build/regressions: Add CORES option, add "check" target.
12 years ago
Samy Al Bahra 1a8b3db453 ck_ht: Various performance improvements.
12 years ago
Samy Al Bahra e1ec55819e regressions/common. Move edx/eax to x86_64 block.
12 years ago
Samy Al Bahra a56cac3a38 regressions/ck_sequence: Work-around LLVM bug.
12 years ago
Samy Al Bahra 59158c824b ck_ht: Do not re-hash on growth for non-PP case.
13 years ago
Samy Al Bahra 72a8adb599 ck_ht: Add support for per-hash-table allocator.
13 years ago
Samy Al Bahra af7b877414 regressions/ck_ht: Turn off CK_MD_RDTSCP by default.
13 years ago
Samy Al Bahra cc23781512 regressions/ck_ht: Switch to a format that is more readable by R.
13 years ago
Samy Al Bahra 9a3909163f regressions/ck_ht: Drop secondary sequence table.
13 years ago
Samy Al Bahra 0b32fd064e regressions/ck_ht: Previous commit was in fact shuffled insertion.
13 years ago
Samy Al Bahra efdae8f77b regressions/ck_ht: Extend serial benchmark.
13 years ago
Samy Al Bahra 3b5a3c857e regressions: Update out-of-date comment.
13 years ago
Samy Al Bahra da9e0f58f1 regressions: Use RDTSCP in presence of CK_MD_RDTSCP.
13 years ago
Samy Al Bahra b353ebe8c2 regressions: Remove debug build flags.
13 years ago
Samy Al Bahra 314ce3ad81 ck_rwlock: Drop factor argument to trylock API.
13 years ago
Samy Al Bahra 512bbc050b ck_rwlock: Add recursive trylock operations.
13 years ago
Samy Al Bahra 380dd410c6 ck_backoff: Saturate geometric back-off.
13 years ago
Samy Al Bahra fc2517947b regressions/ck_ht: Use user-specified hash function for direct benchmark.
13 years ago
Samy Al Bahra 18d74f55a1 ck_ht: Add support for user-specified hash functions.
13 years ago
Samy Al Bahra 606afe0f23 ck_rwlock: Add ck_rwlock_recursive facility.
13 years ago
Samy Al Bahra 402c31ca9a ck_hp_fifo: Add try{enqueue,dequeue} variants.
13 years ago
Samy Al Bahra a90b402c0c regressions/ck_fifo: Add test for try{enqueue,dequeue} API.
13 years ago
Samy Al Bahra ff6f4d94f4 ck_stack: Add wait-free trypop and trypush operations.
13 years ago
Samy Al Bahra 2b2e44203b Merge pull request #5 from abelmathew/master
13 years ago
Abel Mathew 6a6f1d53c8 ck_bag: Validate block_size > block_overhead during ck_bag_init.
13 years ago
Abel Mathew bbc6f584fd ck_bag: Various Bug Fixes and Cleanup.
13 years ago
Samy Al Bahra 099a6c7b04 ck_bitmap: Add bitmap iterator functions.
13 years ago
Samy Al Bahra 3cf265cba0 all: Strip trailing whitespaces.
13 years ago
Samy Al Bahra 10d86b6424 ck_bitmap: Overhaul API for improved support of static instances.
13 years ago
Samy Al Bahra 9d4541d703 ck_bitmap: Fix ck_bitmap_init.
13 years ago
Samy Al Bahra 773ceb8257 regressions: Add necessary header file for sleep.
13 years ago
Samy Al Bahra ab73676ee4 ck_bitmap: Lock-free MPMC contiguous bitset implementation.
13 years ago
Abel Mathew eaa8ad1d4d ck_bag: Various bug fixes.
13 years ago
Samy Al Bahra 2111824c9e regressions: Add ck_bag regressions.
13 years ago
Samy Al Bahra a6dce3abff regressions/ck_bag: Use epoch reclamation, allow for user-defined block size.
13 years ago
Abel Mathew 431c24a90a ck_bag: Lock-Free SPMC bag/collection for x86_64. A bag is a linked list of blocks, with each block containing an array. Insertions are on the order of O(1) and deletions are on the order of O(N). This data structure is meant to act as a lock-free vector implementation.
13 years ago
Samy Al Bahra 0bcb0b48b2 regressions: Add ck_ht parallel direct microbenchmark.
13 years ago
Samy Al Bahra 706fd07de7 legal: Update Copyright statements.
13 years ago
Samy Al Bahra 519a14b7f3 ck_ht: Add CK_F_HT feature flag.
13 years ago
Samy Al Bahra 3ad9f7e63d ck_ht: Add support for other 64-bit platforms.
13 years ago
Samy Al Bahra 516381da4c regressions: Remove CORES definition from ck_ht ubenches.
13 years ago
Samy Al Bahra cef7de2c5f regressions: ck_ht parallel benchmark makes use of affinerator.
13 years ago
Samy Al Bahra d9017b3e5b regressions: Add multi-threaded SPMC synthetic benchmark for ck_ht.
13 years ago
Samy Al Bahra 9f786337f7 ck_ht: Lock-free SPMC hash table, for x86_64.
13 years ago
Samy Al Bahra 84535028d9 regressions: ck_ring_spsc_template explicit power of 2 parameter.
13 years ago
Samy Al Bahra d7bba58c0f regressions: ck_ring_spsc is now explicit about power-of-2 parameter.
13 years ago
Samy Al Bahra 3fa28d9a95 regressions: Fix typo in ck_queue regressions, _GNU_SOURCE also needed.
13 years ago
Samy Al Bahra 02109beef7 regressions: Fix ck_queue, remove debug CFLAGS, inherit PTHREAD_CFLAGS.
13 years ago
Samy Al Bahra 674e69f259 ck_queue: Add BSD-derived queue.h facility.
13 years ago
Samy Al Bahra 4d2f01b84d regressions: Do not break strict aliasing rules in ck_pr validation tests.
13 years ago
Samy Al Bahra 941bc25734 regressions: Add missing include for memset.
13 years ago
Samy Al Bahra 544de60849 ck_pr: Add appropriate casts to ck_pr_cas unit test.
13 years ago
Samy Al Bahra 9dd525d9ee regressions: Remove my awesome attempt at documenting ck_pr_cas.c
13 years ago
Samy Al Bahra becdffadac regressions: arguments are currently unused.
13 years ago
Samy Al Bahra 941542704e ck_pr: bzero is deprecated.
13 years ago
Samy Al Bahra eae4a518a8 ck_epoch: Differentiate read/write epoch endings.
13 years ago
Samy Al Bahra 5f53f86cab regressions: Add missing ck_ring SPMC benchmark.
13 years ago
Samy Al Bahra 1cefea7eb6 ck_spinlock: Provide a default implementation.
13 years ago
Samy Al Bahra 0d8faa5cd8 ck_epoch: Update unit tests to conform to new API.
13 years ago
Samy Al Bahra 10ffb2e6f1 ck_epoch: Support per-object destructors.
13 years ago
Samy Al Bahra 5889498c16 ck_ring: Add modulo logic to ck_ring_size and CK_RING_SIZE.
14 years ago
Samy Al Bahra 52e5152225 regressions: Additional header files, rename to throughput.
14 years ago
Samy Al Bahra 6d72cc1b85 build: Remove stale flag.
14 years ago
Samy Al Bahra c40d3f716d ck_rwlock/ck_brlock: Add throughput benchmarks.
14 years ago
Samy Al Bahra 88ee328b78 ck_ring: Add CK_RING_SIZE/CAPACITY and ck_ring_size/capacity.
14 years ago
Samy Al Bahra c46bc1f1d7 regressions: Silence some irrelevant compiler warnings.
14 years ago
Samy Al Bahra e1219a4d17 regressions/ck_stack: Remove unused variable.
14 years ago
Samy Al Bahra 9098485dc7 regressions: Add Makefile for ck_rwlock and ck_brlock.
14 years ago
Samy Al Bahra b4404f5f86 regressions: Add ck_rwlock to Makefile.
14 years ago
Samy Al Bahra 7b44a157ea regressions: Use ck_rwlock instead of local implementation.
14 years ago
Samy Al Bahra 006f58edcb ck_rwlock: Add a naive rw spinlock after many requests.
14 years ago
Samy Al Bahra 647e570516 regressions: Add ck_brlock to the regressions Makefile.
14 years ago
Samy Al Bahra 786efb9594 ck_brlock: Add big reader spinlocks.
14 years ago
sbahra 49a2820000 Added support for Sun Studio 12 C compiler.
14 years ago
Samy Al Bahra 2754038882 regressions: Drop run.sh, unnecessary. To be replaced soon.
14 years ago
Samy Al Bahra b0fbcb8210 regressions: ck_spinlock, make throughput test more robust.
14 years ago
Samy Al Bahra 5fd2de18bf regressions: Additional changes for 32-bit targets.
14 years ago
Samy Al Bahra 3f87223d21 ck_epoch: Collect from previous instance of epoch. Add torture test.
14 years ago
Samy Al Bahra 2ccb2e9ed4 regressions: Add percentage.
14 years ago
Samy Al Bahra 9f53c39600 regressions/common: Add Mac OS X implementation off aff_iterate.
14 years ago
Samy Al Bahra e23e85b9e9 regressions/ck_barrier: Drop unnecessary flags.
14 years ago
Samy Al Bahra 20fb7a9200 ck_hp: Match epoch semantics.
14 years ago
Samy Al Bahra 83f1436f84 ck_epoch: Redesigned and improved unit test and observability.
14 years ago
Samy Al Bahra 7bd5259505 ck_fifo: MPMC variant will return "garbage" pointer which user can re-use.
14 years ago
Samy Al Bahra ae1d575b00 regressions/ck_stack: Remove redundant flags.
14 years ago
Samy Al Bahra 34ec9ced0a regressions: Use -pthread instead of -lpthread.
14 years ago
Samy Al Bahra 7b8dfe44be ck_hp: Rename *subscribe to *register.
14 years ago
Samy Al Bahra 0f46b5907e ck_epoch: Add validation test to top-level regressions Makefile.
14 years ago
Samy Al Bahra 875d070814 ck_epoch: Remove debug output, update comments.
14 years ago
Samy Al Bahra fa2a5aab97 ck_barrier: Update throughput benchmark to correctly use ck_barrier_centralized.
14 years ago
Samy Al Bahra fb25458121 ck_barrier: Clean up tournament barriers.
14 years ago
Samy Al Bahra 8b4f72057c ck_barrier: First round audit, tournament barriers next.
14 years ago
David Joseph dff69e639d Merge branch 'master' of ssh://git.repnop.org/public/ck
14 years ago
David Joseph 64f6702a4c Implemented tournament and mcs barriers.
14 years ago
Samy Al Bahra 90fee0d839 PPC64: Import minimal PPC64 port.
14 years ago
David Joseph 480db1321c Implemented dissemination barriers.
14 years ago
Samy Al Bahra 7c8ab13343 Some fixes for strict aliasing. Silence some warnings from clang.
14 years ago
Samy Al Bahra 5900adb424 Move ck_barrier.h into shared/static object. Add CK_CC_CACHELINE.
14 years ago
David Joseph 5e7073b9b7 Software tree combining barrier now supports an arbitrary number of threads per group.
14 years ago
Samy Al Bahra 09bfb13762 ck_barrier: Minor changes, reorganization.
14 years ago
David Joseph 8c24a60866 Implemented ck_barrier_combining.
14 years ago
Samy Al Bahra 44643bd5f3 regressions: Use volatile load in aggregation.
14 years ago
Samy Al Bahra d98d3d6ca5 regressions: Fix livelock condition in ck_barrier regression.
14 years ago
Samy Al Bahra 6a66a97d15 Add ck_barrier targets to regressions/Makefile.
14 years ago
David Joseph 2c404fbc2f Added throughput for ck_barrier_centralized.
14 years ago
Samy Al Bahra 949c6859a3 Make use of affinity delta in barrier test.
14 years ago
Samy Al Bahra b5680c42d8 Add sense-reversing centralized barrier.
14 years ago
Samy Al Bahra 646b3ef99e Legal: Add copyright statements.
14 years ago
Samy Al Bahra e9c0f0ce32 Add ck_hp latency tests for FIFO and stack.
14 years ago
Samy Al Bahra d537d49acd Add copyright statements.
14 years ago
Samy Al Bahra c546565588 Add ck_hp_fifo latency tests.
14 years ago
Samy Al Bahra 809089d623 Revert "Commit additional x86 changes to make things work."
14 years ago
Devon H. O'Dell 0e548375f5 Commit additional x86 changes to make things work.
14 years ago
Samy Al Bahra 39537d08bb Add spinlock_pop for stack latency test.
14 years ago
Samy Al Bahra 86eb6b9792 Implement latency tests for naive FIFO.
14 years ago
Samy Al Bahra a181955305 Silence compiler warnings for ck_hp.
14 years ago
Samy Al Bahra b35ef5eceb Make sure to define _GNU_SOURCE for cpuset functionality.
14 years ago
Samy Al Bahra b87d6f8af1 Stub rdtsc on other platforms to ease porting.
14 years ago
Samy Al Bahra bcaadcf094 Factor out some common utility functions.
14 years ago
Samy Al Bahra cbd30b2206 Initial import.
14 years ago