Changeset 9179d0a in mainline
- Timestamp:
- 2006-04-27T17:13:49Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 040e4e9
- Parents:
- eaa202a
- Files:
-
- 29 edited
Legend:
- Unmodified
- Added
- Removed
-
genarch/src/mm/page_ht.c
reaa202a r9179d0a 155 155 /** Map page to frame using page hash table. 156 156 * 157 * Map virtual address @page to physical address @frame158 * using @flags.157 * Map virtual address page to physical address frame 158 * using flags. 159 159 * 160 160 * The page table must be locked and interrupts must be disabled. 161 161 * 162 * @param as Address space to which @page belongs.162 * @param as Address space to which page belongs. 163 163 * @param page Virtual address of the page to be mapped. 164 164 * @param frame Physical address of memory frame to which the mapping is done. … … 191 191 /** Remove mapping of page from page hash table. 192 192 * 193 * Remove any mapping of @page within address space @as.193 * Remove any mapping of page within address space as. 194 194 * TLB shootdown should follow in order to make effects of 195 195 * this call visible. … … 218 218 * The page table must be locked and interrupts must be disabled. 219 219 * 220 * @param as Address space to wich @page belongs.220 * @param as Address space to wich page belongs. 221 221 * @param page Virtual page. 222 222 * -
genarch/src/mm/page_pt.c
reaa202a r9179d0a 50 50 /** Map page to frame using hierarchical page tables. 51 51 * 52 * Map virtual address @page to physical address @frame53 * using @flags.52 * Map virtual address page to physical address frame 53 * using flags. 54 54 * 55 55 * The page table must be locked and interrupts must be disabled. … … 100 100 /** Remove mapping of page from hierarchical page tables. 101 101 * 102 * Remove any mapping of 'page' within address space 'as'.102 * Remove any mapping of page within address space as. 103 103 * TLB shootdown should follow in order to make effects of 104 104 * this call visible. … … 108 108 * The page table must be locked and interrupts must be disabled. 109 109 * 110 * @param as Address space to wich @page belongs.110 * @param as Address space to wich page belongs. 111 111 * @param page Virtual address of the page to be demapped. 112 112 */ … … 228 228 * The page table must be locked and interrupts must be disabled. 229 229 * 230 * @param as Address space to which @page belongs.230 * @param as Address space to which page belongs. 231 231 * @param page Virtual page. 232 232 * -
generic/src/adt/bitmap.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file bitmap.c 31 * @brief Implementation of bitmap ADT. 32 * 33 * This file implements bitmap ADT and provides functions for 34 * setting and clearing ranges of bits. 27 35 */ 28 36 -
generic/src/adt/btree.c
reaa202a r9179d0a 27 27 */ 28 28 29 /* 30 * This B-tree has the following properties: 31 * - it is a ballanced 3-4-5 tree (i.e. BTREE_M = 5) 32 * - values (i.e. pointers to values) are stored only in leaves 33 * - leaves are linked in a list 34 * - technically, it is a B+tree (because of the previous properties) 29 /** 30 * @file btree.c 31 * @brief B+tree implementation. 32 * 33 * This file implements B+tree type and operations. 34 * 35 * The B+tree has the following properties: 36 * @li it is a ballanced 3-4-5 tree (i.e. BTREE_M = 5) 37 * @li values (i.e. pointers to values) are stored only in leaves 38 * @li leaves are linked in a list 35 39 * 36 40 * Be carefull when using these trees. They need to allocate -
generic/src/adt/hash_table.c
reaa202a r9179d0a 27 27 */ 28 28 29 /* 30 * This is an implementation of generic chained hash table. 29 /** 30 * @file hash_table.c 31 * @brief Implementation of generic chained hash table. 32 * 33 * This file contains implementation of generic chained hash table. 31 34 */ 32 35 … … 126 129 * @param h Hash table. 127 130 * @param key Array of keys that will be compared against items of the hash table. 128 * @param keys Number of keys in the 'key'array.131 * @param keys Number of keys in the key array. 129 132 */ 130 133 void hash_table_remove(hash_table_t *h, __native key[], count_t keys) -
generic/src/adt/list.c
reaa202a r9179d0a 27 27 */ 28 28 29 /** 30 * @file list.c 31 * @brief Functions completing doubly linked circular list implementaion. 32 * 33 * This file contains some of the functions implementing doubly linked circular lists. 34 * However, this ADT is mostly implemented in @ref list.h. 35 */ 36 29 37 #include <adt/list.h> 30 31 38 32 39 /** Check for membership -
generic/src/ddi/ddi.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file ddi.c 31 * @brief Device Driver Interface functions. 32 * 33 * This file contains functions that comprise the Device Driver Interface. 34 * These are the functions for mapping physical memory and enabling I/O 35 * space to tasks. 27 36 */ 28 37 -
generic/src/debug/symtab.c
reaa202a r9179d0a 140 140 /** Symtab completion 141 141 * 142 * @param name- Search string, completes to symbol name142 * @param input - Search string, completes to symbol name 143 143 * @returns - 0 - nothing found, 1 - success, >1 print duplicates 144 144 */ -
generic/src/ipc/sysipc.c
reaa202a r9179d0a 430 430 * 431 431 * @param calldata Pointer to buffer where the call/answer data is stored 432 * @param taskid On 'CONNECT_ME_TO' call it is filled with 'taskid' of433 * the caller.434 432 * @param flags 435 433 * @return Callid, if callid & 1, then the call is answer -
generic/src/lib/elf.c
reaa202a r9179d0a 148 148 * @param entry Program header entry describing segment to be loaded. 149 149 * @param elf ELF header. 150 * @par maas Address space into wich the ELF is being loaded.150 * @param as Address space into wich the ELF is being loaded. 151 151 * 152 152 * @return EE_OK on success, error code otherwise. -
generic/src/main/kinit.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file kinit.c 31 * @brief Kernel initialization thread. 32 * 33 * This file contains kinit kernel thread which carries out 34 * high level system initialization. 35 * 36 * This file is responsible for finishing SMP configuration 37 * and creation of userspace init tasks. 27 38 */ 28 39 -
generic/src/main/main.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file main.c 31 * @brief Main initialization kernel function for all processors. 32 * 33 * During kernel boot, all processors, after architecture dependent 34 * initialization, start executing code found in this file. After 35 * bringing up all subsystems, control is passed to scheduler(). 36 * 37 * The bootstrap processor starts executing main_bsp() while 38 * the application processors start executing main_ap(). 39 * 40 * @see scheduler() 41 * @see main_bsp() 42 * @see main_ap() 27 43 */ 28 44 -
generic/src/main/uinit.c
reaa202a r9179d0a 27 27 */ 28 28 29 /** 30 * @file uinit.c 31 * @brief Userspace bootstrap thread. 32 * 33 * This file contains uinit kernel thread wich is used to start every 34 * userspace thread including threads created by SYS_THREAD_CREATE syscall. 35 * 36 * @see SYS_THREAD_CREATE 37 */ 38 29 39 #include <main/uinit.h> 30 40 #include <arch/types.h> -
generic/src/mm/as.c
reaa202a r9179d0a 27 27 */ 28 28 29 /* 29 /** 30 * @file as.c 31 * @brief Address space related functions. 32 * 30 33 * This file contains address space manipulation functions. 31 34 * Roughly speaking, this is a higher-level client of 32 35 * Virtual Address Translation (VAT) subsystem. 36 * 37 * Functionality provided by this file allows one to 38 * create address space and create, resize and share 39 * address space areas. 40 * 41 * @see page.c 42 * 33 43 */ 34 44 … … 685 695 * 686 696 * @param as Address space. 687 * @param as_lockedIf false, do not attempt to lock as->lock.697 * @param lock If false, do not attempt to lock as->lock. 688 698 */ 689 699 void page_table_lock(as_t *as, bool lock) … … 698 708 * 699 709 * @param as Address space. 700 * @param as_lockedIf false, do not attempt to unlock as->lock.710 * @param unlock If false, do not attempt to unlock as->lock. 701 711 */ 702 712 void page_table_unlock(as_t *as, bool unlock) -
generic/src/mm/buddy.c
reaa202a r9179d0a 27 27 */ 28 28 29 /** 30 * @file buddy.c 31 * @brief Buddy allocator framework. 32 * 33 * This file contains buddy system allocator framework. 34 * Specialized functions are needed for this abstract framework 35 * to be useful. 36 */ 37 29 38 #include <mm/buddy.h> 30 39 #include <mm/frame.h> -
generic/src/mm/frame.c
reaa202a r9179d0a 26 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30 /** 31 * @file frame.c 32 * @brief Physical frame allocator. 33 * 34 * This file contains the physical frame allocator and memory zone management. 35 * The frame allocator is built on top of the buddy allocator. 36 * 37 * @see buddy.c 28 38 */ 29 39 -
generic/src/mm/page.c
reaa202a r9179d0a 27 27 */ 28 28 29 /* 30 * Virtual Address Translation subsystem. 29 /** 30 * @file page.c 31 * @brief Virtual Address Translation subsystem. 32 * 33 * This file contains code for creating, destroying and searching 34 * mappings between virtual addresses and physical addresses. 35 * Functions here are mere wrappers that call the real implementation. 36 * They however, define the single interface. 31 37 */ 32 38 … … 74 80 /** Insert mapping of page to frame. 75 81 * 76 * Map virtual address @page to physical address @frame77 * using @flags. Allocate and setup any missing page tables.82 * Map virtual address page to physical address frame 83 * using flags. Allocate and setup any missing page tables. 78 84 * 79 85 * The page table must be locked and interrupts must be disabled. … … 94 100 /** Remove mapping of page. 95 101 * 96 * Remove any mapping of @page within address space @as.102 * Remove any mapping of page within address space as. 97 103 * TLB shootdown should follow in order to make effects of 98 104 * this call visible. -
generic/src/mm/slab.c
reaa202a r9179d0a 27 27 */ 28 28 29 /* 30 * The SLAB allocator is closely modelled after OpenSolaris SLAB allocator 31 * http://www.usenix.org/events/usenix01/full_papers/bonwick/bonwick_html/ 29 /** 30 * @file slab.c 31 * @brief Slab allocator. 32 * 33 * The slab allocator is closely modelled after OpenSolaris slab allocator. 34 * @see http://www.usenix.org/events/usenix01/full_papers/bonwick/bonwick_html/ 32 35 * 33 36 * with the following exceptions: 34 * - empty SLABSare deallocated immediately37 * @li empty slabs are deallocated immediately 35 38 * (in Linux they are kept in linked list, in Solaris ???) 36 * -empty magazines are deallocated when not needed39 * @li empty magazines are deallocated when not needed 37 40 * (in Solaris they are held in linked list in slab cache) 38 41 * 39 * 40 * -cache coloring41 * -dynamic magazine growing (different magazine sizes are already42 * Following features are not currently supported but would be easy to do: 43 * @li cache coloring 44 * @li dynamic magazine growing (different magazine sizes are already 42 45 * supported, but we would need to adjust allocation strategy) 43 46 * 44 * The SLABallocator supports per-CPU caches ('magazines') to facilitate47 * The slab allocator supports per-CPU caches ('magazines') to facilitate 45 48 * good SMP scaling. 46 49 * 47 50 * When a new object is being allocated, it is first checked, if it is 48 51 * available in CPU-bound magazine. If it is not found there, it is 49 * allocated from CPU-shared SLAB- if partial full is found, it is used,52 * allocated from CPU-shared slab - if partial full is found, it is used, 50 53 * otherwise a new one is allocated. 51 54 * 52 55 * When an object is being deallocated, it is put to CPU-bound magazine. 53 56 * If there is no such magazine, new one is allocated (if it fails, 54 * the object is deallocated into SLAB). If the magazine is full, it is57 * the object is deallocated into slab). If the magazine is full, it is 55 58 * put into cpu-shared list of magazines and new one is allocated. 56 59 * … … 61 64 * 62 65 * Every cache contains list of full slabs and list of partialy full slabs. 63 * Empty SLABSare immediately freed (thrashing will be avoided because66 * Empty slabs are immediately freed (thrashing will be avoided because 64 67 * of magazines). 65 68 * 66 * The SLABinformation structure is kept inside the data area, if possible.69 * The slab information structure is kept inside the data area, if possible. 67 70 * The cache can be marked that it should not use magazines. This is used 68 * only for SLABrelated caches to avoid deadlocks and infinite recursion69 * (the SLABallocator uses itself for allocating all it's control structures).70 * 71 * The SLABallocator allocates lot of space and does not free it. When71 * only for slab related caches to avoid deadlocks and infinite recursion 72 * (the slab allocator uses itself for allocating all it's control structures). 73 * 74 * The slab allocator allocates lot of space and does not free it. When 72 75 * frame allocator fails to allocate the frame, it calls slab_reclaim(). 73 76 * It tries 'light reclaim' first, then brutal reclaim. The light reclaim … … 77 80 * magazines. 78 81 * 79 * TODO: For better CPU-scaling the magazine allocation strategy should 82 * TODO:@n 83 * For better CPU-scaling the magazine allocation strategy should 80 84 * be extended. Currently, if the cache does not have magazine, it asks 81 85 * for non-cpu cached magazine cache to provide one. It might be feasible … … 86 90 * magazine cache. 87 91 * 88 * - it might be good to add granularity of locks even to slab level, 89 * we could then try_spinlock over all partial slabs and thus improve 90 * scalability even on slab level 91 */ 92 92 * @li it might be good to add granularity of locks even to slab level, 93 * we could then try_spinlock over all partial slabs and thus improve 94 * scalability even on slab level 95 */ 93 96 94 97 #include <synch/spinlock.h> … … 114 117 /** Cache for external slab descriptors 115 118 * This time we want per-cpu cache, so do not make it static 116 * - using SLAB for internal SLABstructures will not deadlock,119 * - using slab for internal slab structures will not deadlock, 117 120 * as all slab structures are 'small' - control structures of 118 121 * their caches do not require further allocation … … 142 145 143 146 /**************************************/ 144 /* S LABallocation functions */147 /* Slab allocation functions */ 145 148 146 149 /** … … 191 194 192 195 /** 193 * Deallocate space associated with SLAB196 * Deallocate space associated with slab 194 197 * 195 198 * @return number of freed frames … … 213 216 214 217 /**************************************/ 215 /* S LABfunctions */218 /* Slab functions */ 216 219 217 220 … … 274 277 if (list_empty(&cache->partial_slabs)) { 275 278 /* Allow recursion and reclaiming 276 * - this should work, as the SLABcontrol structures279 * - this should work, as the slab control structures 277 280 * are small and do not need to allocte with anything 278 281 * other ten frame_alloc when they are allocating, … … 510 513 511 514 /**************************************/ 512 /* S LAB CACHEfunctions */515 /* Slab cache functions */ 513 516 514 517 /** Return number of objects that fit in certain cache size */ … … 790 793 ipl = interrupts_disable(); 791 794 spinlock_lock(&slab_cache_lock); 792 printf(" SLABname\t Osize\t Pages\t Obj/pg\t Slabs\t Cached\tAllocobjs\tCtl\n");795 printf("slab name\t Osize\t Pages\t Obj/pg\t Slabs\t Cached\tAllocobjs\tCtl\n"); 793 796 for (cur = slab_cache_list.next;cur!=&slab_cache_list; cur=cur->next) { 794 797 cache = list_get_instance(cur, slab_cache_t, link); -
generic/src/mm/tlb.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file tlb.c 31 * @brief Generic TLB shootdown algorithm. 27 32 */ 28 33 -
generic/src/proc/scheduler.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file scheduler.c 31 * @brief Scheduler and load balancing. 32 * 33 * This file contains the scheduler and kcpulb kernel thread wich 34 * performs load-balancing of per-CPU run queues. 27 35 */ 28 36 -
generic/src/proc/task.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file task.c 31 * @brief Task management. 27 32 */ 28 33 … … 116 121 /** Create new task with 1 thread and run it 117 122 * 118 * @param program e_addr Address of program executable image.123 * @param program_addr Address of program executable image. 119 124 * @param name Program name. 120 125 * … … 164 169 /** Syscall for reading task ID from userspace. 165 170 * 166 * @param u addrUserspace address of 8-byte buffer where to store current task ID.171 * @param uspace_task_id Userspace address of 8-byte buffer where to store current task ID. 167 172 * 168 173 * @return Always returns 0. -
generic/src/proc/the.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file the.c 31 * @brief THE structure functions. 32 * 33 * This file contains functions to manage the THE structure. 34 * The THE structure exists at the base address of every kernel 35 * stack and carries information about current settings 36 * (e.g. current CPU, current thread, task and address space 37 * and current preemption counter). 27 38 */ 28 39 -
generic/src/proc/thread.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file thread.c 31 * @brief Thread management functions. 27 32 */ 28 33 -
generic/src/synch/condvar.c
reaa202a r9179d0a 77 77 * 78 78 * For exact description of possible combinations of 79 * @usec and @trywait, see comment for waitq_sleep_timeout().79 * usec and trywait, see comment for waitq_sleep_timeout(). 80 80 * 81 81 * @return See comment for waitq_sleep_timeout(). -
generic/src/synch/futex.c
reaa202a r9179d0a 94 94 * @param uaddr Userspace address of the futex counter. 95 95 * @param usec If non-zero, number of microseconds this thread is willing to sleep. 96 * @param trydown If @usec is zero and trydown is non-zero, conditional operation will be attempted.96 * @param trydown If usec is zero and trydown is non-zero, conditional operation will be attempted. 97 97 * 98 98 * @return One of ESYNCH_TIMEOUT, ESYNCH_OK_ATOMIC and ESYNCH_OK_BLOCKED. See synch.h. … … 219 219 /** Compute hash index into futex hash table. 220 220 * 221 * @param key Address where the @key (i.e. physical address of futex counter) is stored.221 * @param key Address where the key (i.e. physical address of futex counter) is stored. 222 222 * 223 223 * @return Index into futex hash table. … … 232 232 * @param key Address where the key (i.e. physical address of futex counter) is stored. 233 233 * 234 * @return True if the item matches the @key. False otherwise.234 * @return True if the item matches the key. False otherwise. 235 235 */ 236 236 bool futex_ht_compare(__native *key, count_t keys, link_t *item) -
generic/src/synch/mutex.c
reaa202a r9179d0a 52 52 * 53 53 * For exact description of possible combinations of 54 * @usec and @trylock, see comment for waitq_sleep_timeout().54 * usec and trylock, see comment for waitq_sleep_timeout(). 55 55 * 56 56 * @return See comment for waitq_sleep_timeout(). -
generic/src/synch/rwlock.c
reaa202a r9179d0a 27 27 */ 28 28 29 /** Reader/Writer locks 29 /** 30 * @file rwlock.c 31 * @brief Reader/Writer locks. 30 32 * 31 33 * A reader/writer lock can be held by multiple readers at a time. 32 34 * Or it can be exclusively held by a sole writer at a time. 33 */ 34 35 /* 35 * 36 36 * These locks are not recursive. 37 * Neither readers nor writers will suffer starvation. 37 * Because technique called direct hand-off is used, neither readers 38 * nor writers will suffer starvation. 38 39 * 39 40 * If there is a writer followed by a reader waiting for the rwlock … … 146 147 * 147 148 * For exact description of possible combinations of 148 * @usec and @trylock, see comment for waitq_sleep_timeout().149 * usec and trylock, see comment for waitq_sleep_timeout(). 149 150 * 150 151 * @return See comment for waitq_sleep_timeout(). -
generic/src/synch/semaphore.c
reaa202a r9179d0a 66 66 * 67 67 * For exact description of possible combinations of 68 * @usec and @trydown, see comment for waitq_sleep_timeout().68 * usec and trydown, see comment for waitq_sleep_timeout(). 69 69 * 70 70 * @return See comment for waitq_sleep_timeout(). -
generic/src/synch/waitq.c
reaa202a r9179d0a 25 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /** 30 * @file waitq.c 31 * @brief Wait queue. 32 * 33 * Wait queue is the basic synchronization primitive upon all 34 * other synchronization primitives build. 35 * 36 * It allows threads to wait for an event in first-come, first-served 37 * fashion. Conditional operation as well as timeouts and interruptions 38 * are supported. 27 39 */ 28 40 … … 161 173 * @param nonblocking Blocking vs. non-blocking operation mode switch. 162 174 * 163 * If @usec is greater than zero, regardless of the value of @nonblocking,175 * If usec is greater than zero, regardless of the value of nonblocking, 164 176 * the call will not return until either timeout or wakeup comes. 165 177 * 166 * If @usec is zero and @nonblocking is zero (false), the call178 * If usec is zero and @nonblocking is zero (false), the call 167 179 * will not return until wakeup comes. 168 180 * 169 * If @usec is zero and @nonblocking is non-zero (true), the call will181 * If usec is zero and nonblocking is non-zero (true), the call will 170 182 * immediately return, reporting either success or failure. 171 183 * 172 * @return Returns one of: ESYNCH_WOULD_BLOCK, ESYNCH_TIMEOUT,173 * 174 * 175 * ESYNCH_WOULD_BLOCK means that the sleep failed because at the time184 * @return Returns one of: ESYNCH_WOULD_BLOCK, ESYNCH_TIMEOUT, 185 * ESYNCH_OK_ATOMIC, ESYNCH_OK_BLOCKED. 186 * 187 * @li ESYNCH_WOULD_BLOCK means that the sleep failed because at the time 176 188 * of the call there was no pending wakeup. 177 189 * 178 * ESYNCH_TIMEOUT means that the sleep timed out.179 * 180 * ESYNCH_INTERRUPTED means that somebody interrupted the sleeping thread.181 * 182 * ESYNCH_OK_ATOMIC means that the sleep succeeded and that there was190 * @li ESYNCH_TIMEOUT means that the sleep timed out. 191 * 192 * @li ESYNCH_INTERRUPTED means that somebody interrupted the sleeping thread. 193 * 194 * @li ESYNCH_OK_ATOMIC means that the sleep succeeded and that there was 183 195 * a pending wakeup at the time of the call. The caller was not put 184 196 * asleep at all. 185 197 * 186 * ESYNCH_OK_BLOCKED means that the sleep succeeded; the full sleep was198 * @li ESYNCH_OK_BLOCKED means that the sleep succeeded; the full sleep was 187 199 * attempted. 188 200 */
Note:
See TracChangeset
for help on using the changeset viewer.