1eba8b6baSopenharmony_ci//! A small C program which prints out ioctl codes to generate a header file 2eba8b6baSopenharmony_ci//! that bindgen can generate bindings from. 3eba8b6baSopenharmony_ci 4eba8b6baSopenharmony_ci#include <stdio.h> 5eba8b6baSopenharmony_ci#include <stdlib.h> 6eba8b6baSopenharmony_ci#include <string.h> 7eba8b6baSopenharmony_ci 8eba8b6baSopenharmony_civoid list(void); 9eba8b6baSopenharmony_ci 10eba8b6baSopenharmony_cistatic FILE *generated; 11eba8b6baSopenharmony_ci 12eba8b6baSopenharmony_civoid entry(const char *s) { 13eba8b6baSopenharmony_ci if (fprintf(generated, "%s\n", s) != strlen(s) + 1) { 14eba8b6baSopenharmony_ci fprintf(stderr, "can't write to generated.txt: %m\n"); 15eba8b6baSopenharmony_ci exit(1); 16eba8b6baSopenharmony_ci } 17eba8b6baSopenharmony_ci} 18eba8b6baSopenharmony_ci 19eba8b6baSopenharmony_ciint main(void) { 20eba8b6baSopenharmony_ci generated = fopen("generated.txt", "w"); 21eba8b6baSopenharmony_ci if (generated == NULL) { 22eba8b6baSopenharmony_ci fprintf(stderr, "can't open generated.txt: %m\n"); 23eba8b6baSopenharmony_ci exit(EXIT_FAILURE); 24eba8b6baSopenharmony_ci } 25eba8b6baSopenharmony_ci 26eba8b6baSopenharmony_ci#if defined(__i386__) 27eba8b6baSopenharmony_ci printf("#ifdef __i386__\n"); 28eba8b6baSopenharmony_ci#elif defined(__x86_64__) 29eba8b6baSopenharmony_ci printf("#ifdef __x86_64__\n"); 30eba8b6baSopenharmony_ci#elif defined(__arm__) 31eba8b6baSopenharmony_ci printf("#ifdef __arm__\n"); 32eba8b6baSopenharmony_ci#elif defined(__aarch64__) 33eba8b6baSopenharmony_ci printf("#ifdef __aarch64__\n"); 34eba8b6baSopenharmony_ci#elif defined(__powerpc__) 35eba8b6baSopenharmony_ci printf("#ifdef __powerpc__\n"); 36eba8b6baSopenharmony_ci#elif defined(__powerpc64__) 37eba8b6baSopenharmony_ci printf("#ifdef __powerpc64__\n"); 38eba8b6baSopenharmony_ci#elif __mips == 32 39eba8b6baSopenharmony_ci printf("#if __mips == 32\n"); 40eba8b6baSopenharmony_ci#elif __mips == 64 41eba8b6baSopenharmony_ci printf("#if __mips == 64\n"); 42eba8b6baSopenharmony_ci#elif defined(__riscv) && __riscv_xlen == 64 43eba8b6baSopenharmony_ci printf("#if defined(__riscv) && __riscv_xlen == 64\n"); 44eba8b6baSopenharmony_ci#else 45eba8b6baSopenharmony_ci#error "unimplemented architecture" 46eba8b6baSopenharmony_ci#endif 47eba8b6baSopenharmony_ci 48eba8b6baSopenharmony_ci list(); 49eba8b6baSopenharmony_ci 50eba8b6baSopenharmony_ci int r = printf("#endif\n"); 51eba8b6baSopenharmony_ci return r != 7; 52eba8b6baSopenharmony_ci} 53