|
|
queue.h説明を見る。00001 /* 00002 * TOPPERS/FDMP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Function Distributed Multiprocessor Kernel 00005 * 00006 * Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory 00007 * Toyohashi Univ. of Technology, JAPAN 00008 * 00009 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 00010 * によって公表されている GNU General Public License の Version 2 に記 00011 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 00012 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 00013 * 利用と呼ぶ)することを無償で許諾する. 00014 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00015 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00016 * スコード中に含まれていること. 00017 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00018 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00019 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00020 * の無保証規定を掲載すること. 00021 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00022 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00023 * と. 00024 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00025 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00026 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00027 * 報告すること. 00028 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00029 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00030 * 00031 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00032 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 00033 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 00034 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 00035 * 00036 * @(#) $Id: queue.h,v 1.1 2005/04/03 13:33:19 honda Exp $ 00037 */ 00038 00050 #ifndef _QUEUE_H_ 00051 #define _QUEUE_H_ 00052 00056 typedef struct queue { 00057 struct queue *next; /* 次エントリへのポインタ */ 00058 struct queue *prev; /* 前エントリへのポインタ */ 00059 } QUEUE; 00060 00066 Inline void 00067 queue_initialize(QUEUE *queue) 00068 { 00069 queue->prev = queue->next = queue; 00070 } 00071 00078 Inline void 00079 queue_insert_prev(QUEUE *queue, QUEUE *entry) 00080 { 00081 entry->prev = queue->prev; 00082 entry->next = queue; 00083 queue->prev->next = entry; 00084 queue->prev = entry; 00085 } 00086 00092 Inline void 00093 queue_delete(QUEUE *entry) 00094 { 00095 entry->prev->next = entry->next; 00096 entry->next->prev = entry->prev; 00097 } 00098 00106 Inline QUEUE * 00107 queue_delete_next(QUEUE *queue) 00108 { 00109 QUEUE *entry; 00110 00111 assert(queue->next != queue); 00112 entry = queue->next; 00113 queue->next = entry->next; 00114 entry->next->prev = queue; 00115 return(entry); 00116 } 00117 00123 Inline BOOL 00124 queue_empty(QUEUE *queue) 00125 { 00126 if (queue->next == queue) { 00127 assert(queue->prev == queue); 00128 return(TRUE); 00129 } 00130 return(FALSE); 00131 } 00132 00133 #endif /* _QUEUE_H_ */ Copyright © 2006 by TAKAGI Nobuhisa. このページは Mon Apr 3 23:49:12 2006 に Doxygen によって生成されました。 |