18 #ifndef _COPPERPLATE_INTERNAL_H 19 #define _COPPERPLATE_INTERNAL_H 21 #include <sys/types.h> 25 #include <semaphore.h> 26 #include <xeno_config.h> 27 #include <boilerplate/list.h> 28 #include <boilerplate/ancillaries.h> 29 #include <boilerplate/limits.h> 30 #include <boilerplate/sched.h> 31 #include <boilerplate/setup.h> 32 #include <copperplate/heapobj.h> 33 #include <copperplate/tunables.h> 35 #ifdef CONFIG_XENO_REGISTRY 36 #define DEFAULT_REGISTRY_ROOT CONFIG_XENO_REGISTRY_ROOT 38 #define DEFAULT_REGISTRY_ROOT NULL 41 #define HOBJ_PAGE_SHIFT 9 42 #if HOBJ_PAGE_SHIFT > 21 43 #error "page size is too large" 46 #define HOBJ_PAGE_SIZE (1UL << HOBJ_PAGE_SHIFT) 47 #define HOBJ_PAGE_MASK (~(HOBJ_PAGE_SIZE-1)) 49 #define HOBJ_MINLOG2 4 51 #define HOBJ_MAXLOG2 (HOBJ_PAGE_SHIFT + 1) 52 #define HOBJ_NBUCKETS (HOBJ_MAXLOG2 - HOBJ_MINLOG2 + 1) 53 #define HOBJ_MINALIGNSZ (1U << HOBJ_MINLOG2) 55 #define HOBJ_MAXEXTSZ (1U << 31) 62 char name[XNOBJECT_NAME_LEN];
64 struct listobj extents;
68 struct sysgroup_memspec memspec;
72 } buckets[HOBJ_NBUCKETS];
75 struct corethread_attributes {
79 struct sched_param_ex param_ex;
80 int (*prologue)(
void *arg);
81 void *(*run)(
void *arg);
94 void copperplate_set_current_name(
const char *name);
96 int copperplate_get_current_name(
char *name,
size_t maxlen);
98 int copperplate_kill_tid(pid_t tid,
int sig);
100 int copperplate_probe_tid(pid_t tid);
102 int copperplate_create_thread(
struct corethread_attributes *cta,
105 int copperplate_renice_local_thread(pthread_t ptid,
int policy,
106 const struct sched_param_ex *param_ex);
108 void copperplate_bootstrap_internal(
const char *arg0,
109 char *mountpt,
int regflags);