⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threadq.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
字号:
/*  threadq.h * *  This include file contains all the constants and structures associated *  with the manipulation of objects. * *  COPYRIGHT (c) 1989-1999. *  On-Line Applications Research Corporation (OAR). * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: threadq.h,v 1.12.2.1 2003/09/04 18:55:05 joel Exp $ */#ifndef __THREAD_QUEUE_h#define __THREAD_QUEUE_h#ifdef __cplusplusextern "C" {#endif#include <rtems/score/tqdata.h>#include <rtems/score/object.h>#include <rtems/score/thread.h>#include <rtems/score/watchdog.h>/* *  Constant for indefinite wait. */ #define THREAD_QUEUE_WAIT_FOREVER  WATCHDOG_NO_TIMEOUT/* *  The following type defines the callout used when a remote task *  is extracted from a local thread queue. */typedef void ( *Thread_queue_Flush_callout )(                 Thread_Control *             );/* *  The following type defines the callout used when a local task *  is extracted from a remote thread queue (i.e. it's proxy must *  extracted from the remote queue). */ #if 0typedef void ( *Thread_queue_Extract_callout )(                 Thread_Control *             );SCORE_EXTERN Thread_queue_Extract_callout    _Thread_queue_Extract_table[ OBJECTS_CLASSES_LAST + 1 ];#endif/* *  _Thread_queue_Dequeue * *  DESCRIPTION: * *  This function returns a pointer to a thread waiting on *  the_thread_queue.  The selection of this thread is based on *  the discipline of the_thread_queue.  If no threads are waiting *  on the_thread_queue, then NULL is returned. */Thread_Control *_Thread_queue_Dequeue(  Thread_queue_Control *the_thread_queue);/* *  _Thread_queue_Enqueue * *  DESCRIPTION: * *  This routine enqueues the currently executing thread on *  the_thread_queue with an optional timeout. */void _Thread_queue_Enqueue(  Thread_queue_Control *the_thread_queue,  Watchdog_Interval     timeout);/* *  _Thread_queue_Extract * *  DESCRIPTION: * *  This routine removes the_thread from the_thread_queue *  and cancels any timeouts associated with this blocking. */void _Thread_queue_Extract(  Thread_queue_Control *the_thread_queue,  Thread_Control       *the_thread);/* *  _Thread_queue_Extract_with_proxy * *  DESCRIPTION: * *  This routine extracts the_thread from the_thread_queue *  and ensures that if there is a proxy for this task on  *  another node, it is also dealt with. */ boolean _Thread_queue_Extract_with_proxy(  Thread_Control       *the_thread);/* *  _Thread_queue_First * *  DESCRIPTION: * *  This function returns a pointer to the "first" thread *  on the_thread_queue.  The "first" thread is selected *  based on the discipline of the_thread_queue. */Thread_Control *_Thread_queue_First(  Thread_queue_Control *the_thread_queue);/* *  _Thread_queue_Flush * *  DESCRIPTION: * *  This routine unblocks all threads blocked on the_thread_queue *  and cancels any associated timeouts. */void _Thread_queue_Flush(  Thread_queue_Control       *the_thread_queue,  Thread_queue_Flush_callout  remote_extract_callout,  unsigned32                  status);/* *  _Thread_queue_Initialize * *  DESCRIPTION: * *  This routine initializes the_thread_queue based on the *  discipline indicated in attribute_set.  The state set on *  threads which block on the_thread_queue is state. */void _Thread_queue_Initialize(  Thread_queue_Control         *the_thread_queue,  Thread_queue_Disciplines      the_discipline,  States_Control                state,  unsigned32                    timeout_status);/* *  _Thread_queue_Dequeue_priority * *  DESCRIPTION: * *  This function returns a pointer to the highest priority *  thread waiting on the_thread_queue.  If no threads are waiting *  on the_thread_queue, then NULL is returned. */Thread_Control *_Thread_queue_Dequeue_priority(  Thread_queue_Control *the_thread_queue);/* *  _Thread_queue_Enqueue_priority * *  DESCRIPTION: * *  This routine enqueues the currently executing thread on *  the_thread_queue with an optional timeout using the *  priority discipline. */void _Thread_queue_Enqueue_priority(  Thread_queue_Control *the_thread_queue,  Thread_Control       *the_thread,  Watchdog_Interval     timeout);/* *  _Thread_queue_Extract_priority * *  DESCRIPTION: * *  This routine removes the_thread from the_thread_queue *  and cancels any timeouts associated with this blocking. */void _Thread_queue_Extract_priority(  Thread_queue_Control *the_thread_queue,  Thread_Control       *the_thread);/* *  _Thread_queue_First_priority * *  DESCRIPTION: * *  This function returns a pointer to the "first" thread *  on the_thread_queue.  The "first" thread is the highest *  priority thread waiting on the_thread_queue. */Thread_Control *_Thread_queue_First_priority(  Thread_queue_Control *the_thread_queue);/* *  _Thread_queue_Dequeue_FIFO * *  DESCRIPTION: * *  This function returns a pointer to the thread which has *  been waiting the longest on  the_thread_queue.  If no *  threads are waiting on the_thread_queue, then NULL is returned. */Thread_Control *_Thread_queue_Dequeue_fifo(  Thread_queue_Control *the_thread_queue);/* *  _Thread_queue_Enqueue_FIFO * *  DESCRIPTION: * *  This routine enqueues the currently executing thread on *  the_thread_queue with an optional timeout using the *  FIFO discipline. */void _Thread_queue_Enqueue_fifo(  Thread_queue_Control *the_thread_queue,  Thread_Control       *the_thread,  Watchdog_Interval     timeout);/* *  _Thread_queue_Extract_FIFO * *  DESCRIPTION: * *  This routine removes the_thread from the_thread_queue *  and cancels any timeouts associated with this blocking. */void _Thread_queue_Extract_fifo(  Thread_queue_Control *the_thread_queue,  Thread_Control       *the_thread);/* *  _Thread_queue_First_FIFO * *  DESCRIPTION: * *  This function returns a pointer to the "first" thread *  on the_thread_queue.  The first thread is the thread *  which has been waiting longest on the_thread_queue. */Thread_Control *_Thread_queue_First_fifo(  Thread_queue_Control *the_thread_queue);/* *  _Thread_queue_timeout * *  DESCRIPTION: * *  This routine is invoked when a task's request has not *  been satisfied after the timeout interval specified to *  enqueue.  The task represented by ID will be unblocked and *  its status code will be set in it's control block to indicate *  that a timeout has occurred. */void _Thread_queue_Timeout (  Objects_Id  id,  void       *ignored);#ifdef __cplusplus}#endif#endif/* end of include file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -