Mercurial > ecos
annotate packages/kernel/current/include/ktypes.h @ 208:e0c0827131d1 ecos
Merge from eCos master repository on 2002-05-20-20:11:54-BST
| author | jlarmour |
|---|---|
| date | Mon, 20 May 2002 22:19:26 +0000 |
| parents | bf00f99aec69 |
| children | d2c90368aeef |
| rev | line source |
|---|---|
| 0 | 1 #ifndef CYGONCE_KERNEL_KTYPES_H |
| 2 #define CYGONCE_KERNEL_KTYPES_H | |
| 3 | |
| 4 //========================================================================== | |
| 5 // | |
| 2 | 6 // ktypes.h |
| 0 | 7 // |
| 2 | 8 // Standard types used in the kernel and its interfaces |
| 0 | 9 // |
| 10 //========================================================================== | |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
11 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
12 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
13 // This file is part of eCos, the Embedded Configurable Operating System. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
15 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
16 // eCos is free software; you can redistribute it and/or modify it under |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
17 // the terms of the GNU General Public License as published by the Free |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
18 // Software Foundation; either version 2 or (at your option) any later version. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
19 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
20 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
21 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
22 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
23 // for more details. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
24 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
25 // You should have received a copy of the GNU General Public License along |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
26 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
27 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
28 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
29 // As a special exception, if other files instantiate templates or use macros |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
30 // or inline functions from this file, or you compile this file and link it |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
31 // with other works to produce a work based on this file, this file does not |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
32 // by itself cause the resulting work to be covered by the GNU General Public |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
33 // License. However the source code for this file must still be made available |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
34 // in accordance with section (3) of the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
35 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
36 // This exception does not invalidate any other reasons why a work based on |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
37 // this file might be covered by the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
38 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
39 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
40 // at http://sources.redhat.com/ecos/ecos-license |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
41 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
66
diff
changeset
|
42 //####ECOSGPLCOPYRIGHTEND#### |
| 0 | 43 //========================================================================== |
| 44 //#####DESCRIPTIONBEGIN#### | |
| 45 // | |
| 46 // Author(s): nickg from an original by hmt | |
| 47 // Contributors: nickg | |
| 48 // Date: 1997-09-08 | |
| 49 // Purpose: Define kernel specific types | |
| 2 | 50 // Description: Kernel specific types |
| 0 | 51 // Usage: #include <cyg/kernel/ktypes.h> |
| 2 | 52 // ... |
| 53 // cyg_priority priority; // etc | |
| 54 // | |
| 0 | 55 //####DESCRIPTIONEND#### |
| 56 // | |
| 57 //========================================================================== | |
| 58 | |
| 59 // ------------------------------------------------------------------------- | |
| 60 // Check that a configuration file is present. | |
| 61 | |
| 62 #ifndef CYGONCE_PKGCONF_KERNEL_H | |
| 63 #error "No Configuration file included" | |
| 64 #endif | |
| 65 | |
| 66 // ------------------------------------------------------------------------- | |
| 67 | |
| 68 #include <cyg/infra/cyg_type.h> | |
| 69 #include <stddef.h> // for size_t | |
| 70 | |
| 71 // ------------------------------------------------------------------------- | |
| 72 // Integer types: | |
| 73 | |
| 74 typedef cyg_int32 cyg_code; // General return/error/status code | |
| 75 | |
| 76 typedef cyg_count32 cyg_priority; // priority value | |
| 77 | |
| 78 typedef cyg_uint32 cyg_vector; // vector number/descriptor | |
| 79 | |
| 80 typedef cyg_uint64 cyg_tick_count; // clock tick count value | |
| 81 | |
| 82 // ------------------------------------------------------------------------- | |
| 83 // Predefinitions of various kernel classes | |
| 84 | |
| 85 #ifdef __cplusplus | |
| 86 | |
| 87 class Cyg_Scheduler; | |
| 88 class Cyg_Scheduler_Implementation; | |
| 89 | |
| 90 class Cyg_HardwareThread; | |
| 91 class Cyg_SchedThread; | |
| 92 class Cyg_SchedThread_Implementation; | |
| 93 class Cyg_Thread; | |
| 94 | |
| 95 class Cyg_ThreadQueue; | |
| 96 class Cyg_ThreadQueue_Implementation; | |
| 97 | |
| 98 #endif | |
| 99 | |
| 100 | |
| 101 // ------------------------------------------------------------------------- | |
| 102 // Class and structure conversion macros. | |
| 103 // CYG_CLASSFROMFIELD translates a pointer to a field of a struct or | |
| 104 // class into a pointer to the class. | |
| 105 // CYG_OFFSETOFBASE yields the offset of a base class of a derived | |
| 106 // class. | |
| 107 // CYG_CLASSFROMBASE translates a pointer to a base class into a pointer | |
| 108 // to a selected derived class. The base class object _must_ be part of | |
| 109 // the specified derived class. This is essentially a poor mans version | |
| 110 // of the RTTI dynamic_cast operator. | |
| 111 // Caveat: These macros do not work for virtual base classes. | |
| 112 | |
| 113 #define CYG_CLASSFROMFIELD(_type_,_member_,_ptr_)\ | |
| 114 ((_type_ *)((char *)(_ptr_)-((char *)&(((_type_ *)0)->_member_)))) | |
| 115 | |
| 116 #ifdef __cplusplus | |
| 117 | |
| 118 #define CYG_OFFSETOFBASE(_type_,_base_)\ | |
| 119 ((char *)((_base_ *)((_type_ *)4)) - (char *)4) | |
| 120 | |
| 121 # define CYG_CLASSFROMBASE(_class_,_base_,_ptr_)\ | |
| 122 ((_class_ *)((char *)(_ptr_) - CYG_OFFSETOFBASE(_class_,_base_))) | |
| 123 | |
| 124 #endif | |
| 125 | |
| 126 // ------------------------------------------------------------------------- | |
| 127 #endif // CYGONCE_KERNEL_KTYPES_H | |
| 128 // EOF ktypes.h | |
| 129 |
