Rtos API example

Committer:
marcozecchini
Date:
Sat Feb 23 12:13:36 2019 +0000
Revision:
0:9fca2b23d0ba
final commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcozecchini 0:9fca2b23d0ba 1 #include "mbed_toolchain.h"
marcozecchini 0:9fca2b23d0ba 2
marcozecchini 0:9fca2b23d0ba 3 #include <stdio.h>
marcozecchini 0:9fca2b23d0ba 4 #include <stdint.h>
marcozecchini 0:9fca2b23d0ba 5
marcozecchini 0:9fca2b23d0ba 6
marcozecchini 0:9fca2b23d0ba 7 MBED_PACKED(struct) TestAttrPackedStruct1 {
marcozecchini 0:9fca2b23d0ba 8 char a;
marcozecchini 0:9fca2b23d0ba 9 int x;
marcozecchini 0:9fca2b23d0ba 10 };
marcozecchini 0:9fca2b23d0ba 11
marcozecchini 0:9fca2b23d0ba 12 typedef MBED_PACKED(struct) {
marcozecchini 0:9fca2b23d0ba 13 char a;
marcozecchini 0:9fca2b23d0ba 14 int x;
marcozecchini 0:9fca2b23d0ba 15 } TestAttrPackedStruct2;
marcozecchini 0:9fca2b23d0ba 16
marcozecchini 0:9fca2b23d0ba 17 int testPacked() {
marcozecchini 0:9fca2b23d0ba 18 int failed = 0;
marcozecchini 0:9fca2b23d0ba 19
marcozecchini 0:9fca2b23d0ba 20 if (sizeof(struct TestAttrPackedStruct1) != sizeof(int) + sizeof(char)) {
marcozecchini 0:9fca2b23d0ba 21 failed++;
marcozecchini 0:9fca2b23d0ba 22 }
marcozecchini 0:9fca2b23d0ba 23
marcozecchini 0:9fca2b23d0ba 24 if (sizeof(TestAttrPackedStruct2) != sizeof(int) + sizeof(char)) {
marcozecchini 0:9fca2b23d0ba 25 failed++;
marcozecchini 0:9fca2b23d0ba 26 }
marcozecchini 0:9fca2b23d0ba 27
marcozecchini 0:9fca2b23d0ba 28 return failed;
marcozecchini 0:9fca2b23d0ba 29 }
marcozecchini 0:9fca2b23d0ba 30
marcozecchini 0:9fca2b23d0ba 31
marcozecchini 0:9fca2b23d0ba 32 MBED_ALIGN(8) char a;
marcozecchini 0:9fca2b23d0ba 33 MBED_ALIGN(8) char b;
marcozecchini 0:9fca2b23d0ba 34 MBED_ALIGN(16) char c;
marcozecchini 0:9fca2b23d0ba 35 MBED_ALIGN(8) char d;
marcozecchini 0:9fca2b23d0ba 36 MBED_ALIGN(16) char e;
marcozecchini 0:9fca2b23d0ba 37
marcozecchini 0:9fca2b23d0ba 38 int testAlign() {
marcozecchini 0:9fca2b23d0ba 39 int failed = 0;
marcozecchini 0:9fca2b23d0ba 40
marcozecchini 0:9fca2b23d0ba 41 if(((uintptr_t)&a) & 0x7){
marcozecchini 0:9fca2b23d0ba 42 failed++;
marcozecchini 0:9fca2b23d0ba 43 }
marcozecchini 0:9fca2b23d0ba 44 if(((uintptr_t)&b) & 0x7){
marcozecchini 0:9fca2b23d0ba 45 failed++;
marcozecchini 0:9fca2b23d0ba 46 }
marcozecchini 0:9fca2b23d0ba 47 if(((uintptr_t)&c) & 0xf){
marcozecchini 0:9fca2b23d0ba 48 failed++;
marcozecchini 0:9fca2b23d0ba 49 }
marcozecchini 0:9fca2b23d0ba 50 if(((uintptr_t)&d) & 0x7){
marcozecchini 0:9fca2b23d0ba 51 failed++;
marcozecchini 0:9fca2b23d0ba 52 }
marcozecchini 0:9fca2b23d0ba 53 if(((uintptr_t)&e) & 0xf){
marcozecchini 0:9fca2b23d0ba 54 failed++;
marcozecchini 0:9fca2b23d0ba 55 }
marcozecchini 0:9fca2b23d0ba 56
marcozecchini 0:9fca2b23d0ba 57 return failed;
marcozecchini 0:9fca2b23d0ba 58 }
marcozecchini 0:9fca2b23d0ba 59
marcozecchini 0:9fca2b23d0ba 60
marcozecchini 0:9fca2b23d0ba 61 int testUnused1(MBED_UNUSED int arg) {
marcozecchini 0:9fca2b23d0ba 62 return 0;
marcozecchini 0:9fca2b23d0ba 63 }
marcozecchini 0:9fca2b23d0ba 64
marcozecchini 0:9fca2b23d0ba 65 int testUnused() {
marcozecchini 0:9fca2b23d0ba 66 return testUnused1(0);
marcozecchini 0:9fca2b23d0ba 67 }
marcozecchini 0:9fca2b23d0ba 68
marcozecchini 0:9fca2b23d0ba 69
marcozecchini 0:9fca2b23d0ba 70 int testWeak1();
marcozecchini 0:9fca2b23d0ba 71 int testWeak2();
marcozecchini 0:9fca2b23d0ba 72
marcozecchini 0:9fca2b23d0ba 73 MBED_WEAK int testWeak1() {
marcozecchini 0:9fca2b23d0ba 74 return 1;
marcozecchini 0:9fca2b23d0ba 75 }
marcozecchini 0:9fca2b23d0ba 76
marcozecchini 0:9fca2b23d0ba 77 int testWeak2() {
marcozecchini 0:9fca2b23d0ba 78 return 0;
marcozecchini 0:9fca2b23d0ba 79 }
marcozecchini 0:9fca2b23d0ba 80
marcozecchini 0:9fca2b23d0ba 81 int testWeak() {
marcozecchini 0:9fca2b23d0ba 82 return testWeak1() | testWeak2();
marcozecchini 0:9fca2b23d0ba 83 }
marcozecchini 0:9fca2b23d0ba 84
marcozecchini 0:9fca2b23d0ba 85
marcozecchini 0:9fca2b23d0ba 86 MBED_PURE int testPure1() {
marcozecchini 0:9fca2b23d0ba 87 return 0;
marcozecchini 0:9fca2b23d0ba 88 }
marcozecchini 0:9fca2b23d0ba 89
marcozecchini 0:9fca2b23d0ba 90 int testPure() {
marcozecchini 0:9fca2b23d0ba 91 return testPure1();
marcozecchini 0:9fca2b23d0ba 92 }
marcozecchini 0:9fca2b23d0ba 93
marcozecchini 0:9fca2b23d0ba 94
marcozecchini 0:9fca2b23d0ba 95 MBED_FORCEINLINE int testForceInline1() {
marcozecchini 0:9fca2b23d0ba 96 return 0;
marcozecchini 0:9fca2b23d0ba 97 }
marcozecchini 0:9fca2b23d0ba 98
marcozecchini 0:9fca2b23d0ba 99 int testForceInline() {
marcozecchini 0:9fca2b23d0ba 100 return testForceInline1();
marcozecchini 0:9fca2b23d0ba 101 }
marcozecchini 0:9fca2b23d0ba 102
marcozecchini 0:9fca2b23d0ba 103
marcozecchini 0:9fca2b23d0ba 104 MBED_NORETURN int testNoReturn1() {
marcozecchini 0:9fca2b23d0ba 105 while (1) {}
marcozecchini 0:9fca2b23d0ba 106 }
marcozecchini 0:9fca2b23d0ba 107
marcozecchini 0:9fca2b23d0ba 108 int testNoReturn() {
marcozecchini 0:9fca2b23d0ba 109 if (0) {
marcozecchini 0:9fca2b23d0ba 110 testNoReturn1();
marcozecchini 0:9fca2b23d0ba 111 }
marcozecchini 0:9fca2b23d0ba 112 return 0;
marcozecchini 0:9fca2b23d0ba 113 }
marcozecchini 0:9fca2b23d0ba 114
marcozecchini 0:9fca2b23d0ba 115
marcozecchini 0:9fca2b23d0ba 116 int testUnreachable1(int i) {
marcozecchini 0:9fca2b23d0ba 117 switch (i) {
marcozecchini 0:9fca2b23d0ba 118 case 0:
marcozecchini 0:9fca2b23d0ba 119 return 0;
marcozecchini 0:9fca2b23d0ba 120 }
marcozecchini 0:9fca2b23d0ba 121
marcozecchini 0:9fca2b23d0ba 122 MBED_UNREACHABLE;
marcozecchini 0:9fca2b23d0ba 123 }
marcozecchini 0:9fca2b23d0ba 124
marcozecchini 0:9fca2b23d0ba 125 int testUnreachable() {
marcozecchini 0:9fca2b23d0ba 126 return testUnreachable1(0);
marcozecchini 0:9fca2b23d0ba 127 }
marcozecchini 0:9fca2b23d0ba 128
marcozecchini 0:9fca2b23d0ba 129
marcozecchini 0:9fca2b23d0ba 130 MBED_DEPRECATED("this message should not be displayed")
marcozecchini 0:9fca2b23d0ba 131 void testDeprecatedUnused();
marcozecchini 0:9fca2b23d0ba 132 void testDeprecatedUnused() { }
marcozecchini 0:9fca2b23d0ba 133
marcozecchini 0:9fca2b23d0ba 134 MBED_DEPRECATED("this message should be displayed")
marcozecchini 0:9fca2b23d0ba 135 int testDeprecatedUsed();
marcozecchini 0:9fca2b23d0ba 136 int testDeprecatedUsed() {
marcozecchini 0:9fca2b23d0ba 137 return 0;
marcozecchini 0:9fca2b23d0ba 138 }
marcozecchini 0:9fca2b23d0ba 139
marcozecchini 0:9fca2b23d0ba 140 MBED_DEPRECATED_SINCE("mbed-os-3.14", "this message should not be displayed")
marcozecchini 0:9fca2b23d0ba 141 void testDeprecatedSinceUnused();
marcozecchini 0:9fca2b23d0ba 142 void testDeprecatedSinceUnused() { }
marcozecchini 0:9fca2b23d0ba 143
marcozecchini 0:9fca2b23d0ba 144 MBED_DEPRECATED_SINCE("mbed-os-3.14", "this message should be displayed")
marcozecchini 0:9fca2b23d0ba 145 int testDeprecatedSinceUsed();
marcozecchini 0:9fca2b23d0ba 146 int testDeprecatedSinceUsed() {
marcozecchini 0:9fca2b23d0ba 147 return 0;
marcozecchini 0:9fca2b23d0ba 148 }
marcozecchini 0:9fca2b23d0ba 149
marcozecchini 0:9fca2b23d0ba 150 int testDeprecated() {
marcozecchini 0:9fca2b23d0ba 151 return testDeprecatedUsed() + testDeprecatedSinceUsed();
marcozecchini 0:9fca2b23d0ba 152 }
marcozecchini 0:9fca2b23d0ba 153