1 // These defines are from bsd/sys/reason.h: 2 #include <stdint.h> 3 #include <string.h> 4 5 extern void abort_with_payload(uint32_t reason_namespace, uint64_t reason_code, 6 void *payload, uint32_t payload_size, 7 const char *reason_string, 8 uint64_t reason_flags); 9 10 extern void abort_with_reason(uint32_t reason_namespace, uint64_t reason_code, 11 const char *reason_string, uint64_t reason_flags); 12 13 #define OS_REASON_FLAG_FROM_USERSPACE 0x4 14 #define OS_REASON_FLAG_NO_CRASH_REPORT 0x1 15 #define OS_REASON_FLAG_ONE_TIME_FAILURE 0x80 16 17 #define MY_REASON_FLAGS \ 18 OS_REASON_FLAG_FROM_USERSPACE | OS_REASON_FLAG_NO_CRASH_REPORT | \ 19 OS_REASON_FLAG_ONE_TIME_FAILURE 20 #define OS_REASON_TEST 5 21 22 int main(int argc, char **argv) { 23 const char *reason_string = "This is the reason string"; 24 const char *payload_string = "This is a payload that happens to be a string"; 25 size_t payload_string_len = strlen(payload_string) + 1; 26 if (argc == 1) // Stop here before abort 27 abort_with_payload(OS_REASON_TEST, 100, (void *)payload_string, 28 payload_string_len, reason_string, MY_REASON_FLAGS); 29 else 30 abort_with_reason(OS_REASON_TEST, 100, reason_string, MY_REASON_FLAGS); 31 32 return 0; 33 } 34