Rtos API example

Revision:
0:9fca2b23d0ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os/TESTS/mbedmicro-mbed/attributes/attributes.c	Sat Feb 23 12:13:36 2019 +0000
@@ -0,0 +1,153 @@
+#include "mbed_toolchain.h"
+
+#include <stdio.h>
+#include <stdint.h>
+
+
+MBED_PACKED(struct) TestAttrPackedStruct1 {
+    char a;
+    int x;
+};
+
+typedef MBED_PACKED(struct) {
+    char a;
+    int x;
+} TestAttrPackedStruct2;
+
+int testPacked() {
+    int failed = 0;
+
+    if (sizeof(struct TestAttrPackedStruct1) != sizeof(int) + sizeof(char)) {
+        failed++;
+    }
+
+    if (sizeof(TestAttrPackedStruct2) != sizeof(int) + sizeof(char)) {
+        failed++;
+    }
+
+    return failed;
+}
+
+
+MBED_ALIGN(8)  char a;
+MBED_ALIGN(8)  char b;
+MBED_ALIGN(16) char c;
+MBED_ALIGN(8)  char d;
+MBED_ALIGN(16) char e;
+
+int testAlign() {
+    int failed = 0;
+
+    if(((uintptr_t)&a) & 0x7){
+        failed++;
+    }
+    if(((uintptr_t)&b) & 0x7){
+        failed++;
+    }
+    if(((uintptr_t)&c) & 0xf){
+        failed++;
+    }
+    if(((uintptr_t)&d) & 0x7){
+        failed++;
+    }
+    if(((uintptr_t)&e) & 0xf){
+        failed++;
+    }
+
+    return failed;
+}
+
+
+int testUnused1(MBED_UNUSED int arg) {
+    return 0;
+}
+
+int testUnused() {
+    return testUnused1(0);
+}
+
+
+int testWeak1();
+int testWeak2();
+
+MBED_WEAK int testWeak1() {
+    return 1;
+}
+
+int testWeak2() {
+    return 0;
+}
+
+int testWeak() {
+    return testWeak1() | testWeak2();
+}
+
+
+MBED_PURE int testPure1() {
+    return 0;
+}
+
+int testPure() {
+    return testPure1();
+}
+
+
+MBED_FORCEINLINE int testForceInline1() {
+    return 0;
+}
+
+int testForceInline() {
+    return testForceInline1();
+}
+
+
+MBED_NORETURN int testNoReturn1() {
+    while (1) {}
+}
+
+int testNoReturn() {
+    if (0) {
+        testNoReturn1();
+    }
+    return 0;
+}
+
+
+int testUnreachable1(int i) {
+    switch (i) {
+        case 0:
+            return 0;
+    }
+
+    MBED_UNREACHABLE;
+}
+
+int testUnreachable() {
+    return testUnreachable1(0);
+}
+
+
+MBED_DEPRECATED("this message should not be displayed")
+void testDeprecatedUnused(); 
+void testDeprecatedUnused() { }
+
+MBED_DEPRECATED("this message should be displayed")
+int testDeprecatedUsed();
+int testDeprecatedUsed() {
+    return 0;
+}
+
+MBED_DEPRECATED_SINCE("mbed-os-3.14", "this message should not be displayed")
+void testDeprecatedSinceUnused();
+void testDeprecatedSinceUnused() { }
+
+MBED_DEPRECATED_SINCE("mbed-os-3.14", "this message should be displayed")
+int testDeprecatedSinceUsed();
+int testDeprecatedSinceUsed() {
+    return 0;
+}
+
+int testDeprecated() {
+    return testDeprecatedUsed() + testDeprecatedSinceUsed();
+}
+