• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

include/nucleus/sys_ppd.h

00001 #ifndef _XENO_NUCLEUS_SYS_PPD_H
00002 #define _XENO_NUCLEUS_SYS_PPD_H
00003 
00004 #include <nucleus/ppd.h>
00005 #include <nucleus/heap.h>
00006 
00007 struct xnsys_ppd {
00008         xnshadow_ppd_t ppd;
00009         xnheap_t sem_heap;
00010 #ifdef XNARCH_HAVE_MAYDAY
00011         unsigned long mayday_addr;
00012 #endif
00013         xnarch_atomic_t refcnt;
00014 #define ppd2sys(addr) container_of(addr, struct xnsys_ppd, ppd)
00015 };
00016 
00017 extern struct xnsys_ppd __xnsys_global_ppd;
00018 
00019 #ifdef CONFIG_XENO_OPT_PERVASIVE
00020 
00021 static inline struct xnsys_ppd *xnsys_ppd_get(int global)
00022 {
00023         xnshadow_ppd_t *ppd;
00024 
00025         if (global || !(ppd = xnshadow_ppd_get(0)))
00026                 return &__xnsys_global_ppd;
00027 
00028         return ppd2sys(ppd);
00029 }
00030 
00031 #else /* !CONFIG_XENO_OPT_PERVASIVE */
00032 
00033 static inline struct xnsys_ppd *xnsys_ppd_get(int global)
00034 {
00035         return &__xnsys_global_ppd;
00036 }
00037 
00038 #endif /* !CONFIG_XENO_OPT_PERVASIVE */
00039 
00040 #endif /* _XENO_NUCLEUS_SYS_PPD_H */

Generated on Wed Nov 2 2011 18:01:06 for Xenomai API by  doxygen 1.7.1