Module: xenomai-3 Branch: master Commit: d99d0235cf8de888ce3199c2a44cc9bea482d3c9 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=d99d0235cf8de888ce3199c2a44cc9bea482d3c9
Author: Philippe Gerum <r...@xenomai.org> Date: Wed Nov 5 11:47:44 2014 +0100 cobalt/uapi: allow up to 128 distinct clock identifiers As more POSIX clocks are being defined by the regular kernel, we need to reserve a larger namespace (32) for their identifiers. At this chance, the Cobalt namespace for static and dynamic clocks is extended too (32 and 64 ids respectively). As a consequence of this change, we limit the pshared attribute to a plain boolean value to get additional encoding space in some base type (i.e. condvar attribute). --- include/cobalt/uapi/thread.h | 7 ++++--- include/cobalt/uapi/time.h | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/include/cobalt/uapi/thread.h b/include/cobalt/uapi/thread.h index 714af43..28fc681 100644 --- a/include/cobalt/uapi/thread.h +++ b/include/cobalt/uapi/thread.h @@ -28,12 +28,13 @@ struct cobalt_mutexattr { int type : 3; int protocol : 3; - int pshared : 2; + int pshared : 1; + int __pad : 1; }; struct cobalt_condattr { - int clock : 6; - int pshared : 2; + int clock : 7; + int pshared : 1; }; struct cobalt_threadstat { diff --git a/include/cobalt/uapi/time.h b/include/cobalt/uapi/time.h index 10ad8ce..4a3679b 100644 --- a/include/cobalt/uapi/time.h +++ b/include/cobalt/uapi/time.h @@ -27,19 +27,22 @@ * of the POSIX and Linux kernel definitions so that no ambiguities * arise when porting applications in both directions. * - * 0 .. 7 regular POSIX/linux clock ids. - * 8 .. 31 statically reserved Cobalt clocks - * 32 .. 63 dynamically registered Cobalt clocks (external) + * 0 .. 31 regular POSIX/linux clock ids. + * 32 .. 63 statically reserved Cobalt clocks + * 64 .. 127 dynamically registered Cobalt clocks (external) + * + * CAUTION: clock ids must fit within a 7bit value, see + * include/cobalt/uapi/thread.h (e.g. cobalt_condattr). */ -#define __COBALT_CLOCK_STATIC(nr) ((clockid_t)(nr + 8)) +#define __COBALT_CLOCK_STATIC(nr) ((clockid_t)(nr + 32)) #define CLOCK_HOST_REALTIME __COBALT_CLOCK_STATIC(0) -#define COBALT_MAX_EXTCLOCKS 32 +#define COBALT_MAX_EXTCLOCKS 64 -#define __COBALT_CLOCK_EXT(nr) ((clockid_t)(nr) | (1 << 5)) -#define __COBALT_CLOCK_EXT_P(id) ((int)(id) & (1 << 5)) -#define __COBALT_CLOCK_EXT_INDEX(id) ((int)(id) & ~(1 << 5)) +#define __COBALT_CLOCK_EXT(nr) ((clockid_t)(nr) | (1 << 6)) +#define __COBALT_CLOCK_EXT_P(id) ((int)(id) & (1 << 6)) +#define __COBALT_CLOCK_EXT_INDEX(id) ((int)(id) & ~(1 << 6)) /* * Additional timerfd defines _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git