nicer error handling

This commit is contained in:
twoneis 2025-04-28 12:56:20 +02:00
parent 9b5db80b65
commit 20f27c7a9f

View file

@ -19,6 +19,28 @@ int spray[SPRAY][2];
int pipes[PIPES][2]; int pipes[PIPES][2];
char buffer[0x100]; char buffer[0x100];
void
error(char *origin)
{
switch (errno) {
case EFAULT:
printf("%s: EFAULT\n", origin);
break;
case EINVAL:
printf("%s: EINVAL\n", origin);
break;
case EMFILE:
printf("%s: EMFILE\n", origin);
break;
case ENFILE:
printf("%s: ENFILE\n", origin);
break;
default:
printf("%s: unknown\n", origin);
}
exit(-1);
}
extern inline size_t extern inline size_t
rdtsc_begin(void) rdtsc_begin(void)
{ {
@ -50,45 +72,14 @@ main(void)
printf("main: spray to reduce TLB noise part 1: %u objects\n", printf("main: spray to reduce TLB noise part 1: %u objects\n",
SPRAY / 2); SPRAY / 2);
for (size_t i = 0; i < SPRAY / 2; i++) { for (size_t i = 0; i < SPRAY / 2; i++) {
int ret; if (pipe2(spray[i], O_NONBLOCK) < 0) {
ret = pipe2(spray[i], O_NONBLOCK); error("main: spray one: pipe2");
if (ret < 0) {
switch (errno) {
case EFAULT:
printf(
"main: error: object %lu pipe2: EFAULT\n",
i);
break;
case EINVAL:
printf(
"main: error: object %lu pipe2: EINVAL\n",
i);
break;
case EMFILE:
printf(
"main: error: object %lu pipe2: EMFILE\n",
i);
break;
case ENFILE:
printf(
"main: error: object %lu pipe2: ENFILE\n",
i);
break;
default:
printf("main: error: object %lu pipe2: %i\n", i,
errno);
}
exit(-1);
} }
ret = fcntl(spray[i][0], F_SETPIPE_SZ, 8192); if (fcntl(spray[i][0], F_SETPIPE_SZ, 8192) < 0) {
if (ret < 0) { error("main: spray one: fcntl");
printf("main: error: fcntl: object %lu\n", i);
exit(-1);
} }
ret = write(spray[i][1], buffer, 8); if (write(spray[i][1], buffer, 8) < 0) {
if (ret < 0) { error("main: spray one: write");
printf("main: error: write: object %lu\n", i);
exit(-1);
} }
} }