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