]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - tos/lib/safe/include/annots_stage1.h
change FAT annotations to BND
[tinyos-2.x.git] / tos / lib / safe / include / annots_stage1.h
index 44d24463bce2f5ca7723eba90358e9a0408d4b70..c1278895c4f1777ba026b60f00d5c602351e6dd1 100644 (file)
@@ -1,17 +1,35 @@
 #ifndef ANNOTS_STAGE1_INCLUDED
 #define ANNOTS_STAGE1_INCLUDED
+#include <stddef.h>
 
-#if NESC >= 130 && defined(SAFE_TINYOS)
+#define __DEPUTY_UNUSED__                      __attribute__((unused))
+
+// define away two obsolete annotations
+#define BOUND(x,y)
+#define SINGLE
+
+#if NESC >= 130
 
-struct @bound @deputy_scope() @macro("__DEPUTY_BOUND") { void *lo, *hi; }; 
-struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; }; 
-struct @single @deputy_scope() @macro("__DEPUTY_SINGLE") { }; 
 struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { }; 
+struct @bnd @deputy_scope() @macro("__DEPUTY_BND") { void *lo, *hi; }; 
+struct @bnd_nok @deputy_scope() @macro("__DEPUTY_BND_NOK") { void *lo, *hi; }; 
+struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; }; 
+struct @count_nok @deputy_scope() @macro("__DEPUTY_COUNT_NOK") { int n; }; 
+struct @one @deputy_scope() @macro("__DEPUTY_ONE") { }; 
+struct @one_nok @deputy_scope() @macro("__DEPUTY_ONE_NOK") { };
+struct @dmemset @deputy_scope() @macro("__DEPUTY_DMEMSET") {void *p; int what; size_t sz; };
+struct @dmemcpy @deputy_scope() @macro("__DEPUTY_DMEMCPY") {void *dst; void *src; size_t sz; };
 
-#define COUNT(x)                               @count(x)
-#define BOUND(x,y)                             @bound(x,y)
-#define SINGLE                                 @single()
 #define NONNULL                                @nonnull()
+#define BND(x,y)                               @bnd(x,y)
+#define BND_NOK(x,y)                           @bnd_nok(x,y)
+#define COUNT(x)                               @count(x)
+#define COUNT_NOK(x)                           @count_nok(x)
+#define ONE                                    @one()
+#define ONE_NOK                                @one_nok()
+#define DMEMSET(x,y,z)                         @dmemset(x,y,z)
+#define DMEMCPY(x,y,z)                         @dmemcpy(x,y,z)
+#define TRUSTEDBLOCK                           @unsafe()
 
 #else // NESC < 130
 
@@ -19,15 +37,20 @@ struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { };
 #error Safe TinyOS requires nesC >= 1.3.0
 #endif
 
-#define COUNT(x)                               
-#define BOUND(x,y)                             
-#define SINGLE                                 
 #define NONNULL                                
+#define BND(x,y)                             
+#define BND_NOK(x,y)                             
+#define COUNT(x)                               
+#define COUNT_NOK(x)                               
+#define ONE 
+#define ONE_NOK
+#define DMEMSET(x,y,z)
+#define DMEMCPY(x,y,z)
+#define TRUSTEDBLOCK
 
-#endif 
+#endif // NESC version check
 
 #ifdef SAFE_TINYOS
-
 #define TCAST(__type,__expr)                   ((__type)((void * __DEPUTY_TRUSTED __DEPUTY_COPYTYPE)(__expr)))
 #define __DEPUTY_TRUSTED                       __attribute__((trusted))
 #define __DEPUTY_COPYTYPE                      __attribute__((copytype))
@@ -35,5 +58,9 @@ struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { };
 #define TCAST(__type,__expr)                   ((__type)(__expr))                
 #endif 
 
-#endif // ANNOTS_STAGE1_INCLUDED
+#ifdef SAFE_TINYOS
+void * (DMEMSET(1, 2, 3) memset)(void*, int, size_t);
+void * (DMEMCPY(1, 2, 3) memcpy)(void*, const void*, size_t);
+#endif
 
+#endif