skins/rtai/registry.h

Go to the documentation of this file.
00001 00049 #ifndef _RTAI_REGISTRY_H 00050 #define _RTAI_REGISTRY_H 00051 00052 #include <rtai/types.h> 00053 00054 #define RT_REGISTRY_SELF ((rt_handle_t)0) 00055 00056 #ifdef __KERNEL__ 00057 00058 #include <nucleus/synch.h> 00059 #include <nucleus/thread.h> 00060 00061 #define RT_REGISTRY_RECHECK XNTHREAD_SPARE0 00062 00063 typedef struct rt_object { 00064 00065 xnholder_t link; 00066 #define link2rtobj(laddr) \ 00067 ((RT_OBJECT *)(((char *)laddr) - (int)(&((RT_OBJECT *)0)->link))) 00068 00069 void *objaddr; 00070 00071 const char *key; /* !< Hash key. */ 00072 00073 xnsynch_t safesynch; /* !< Safe synchronization object. */ 00074 00075 u_long safelock; /* !< Safe lock count. */ 00076 00077 u_long cstamp; /* !< Creation stamp. */ 00078 00079 } RT_OBJECT; 00080 00081 typedef struct rt_hash { 00082 00083 RT_OBJECT *object; 00084 00085 struct rt_hash *next; /* !< Next in h-table */ 00086 00087 } RT_HASH; 00088 00089 extern RT_OBJECT __rtai_obj_slots[]; 00090 00091 #ifdef __cplusplus 00092 extern "C" { 00093 #endif 00094 00095 int __registry_pkg_init(void); 00096 00097 void __registry_pkg_cleanup(void); 00098 00099 /* Public interface. */ 00100 00101 int rt_registry_enter(const char *key, 00102 void *objaddr, 00103 rt_handle_t *phandle); 00104 00105 int rt_registry_bind(const char *key, 00106 RTIME timeout, 00107 rt_handle_t *phandle); 00108 00109 int rt_registry_remove(rt_handle_t); 00110 00111 void *rt_registry_get(rt_handle_t handle); 00112 00113 void *rt_registry_fetch(rt_handle_t handle); 00114 00115 u_long rt_registry_put(rt_handle_t handle); 00116 00117 #ifdef __cplusplus 00118 } 00119 #endif 00120 00121 #endif /* __KERNEL__ */ 00122 00123 #endif /* !_RTAI_REGISTRY_H */

Generated on Mon Aug 30 13:58:39 2004 for RTAI API by doxygen 1.3.8