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];
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
rdtsc_begin(void)
{
@ -50,45 +72,14 @@ main(void)
printf("main: spray to reduce TLB noise part 1: %u objects\n",
SPRAY / 2);
for (size_t i = 0; i < SPRAY / 2; i++) {
int ret;
ret = pipe2(spray[i], O_NONBLOCK);
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);
if (pipe2(spray[i], O_NONBLOCK) < 0) {
error("main: spray one: pipe2");
}
exit(-1);
if (fcntl(spray[i][0], F_SETPIPE_SZ, 8192) < 0) {
error("main: spray one: fcntl");
}
ret = fcntl(spray[i][0], F_SETPIPE_SZ, 8192);
if (ret < 0) {
printf("main: error: fcntl: object %lu\n", i);
exit(-1);
}
ret = write(spray[i][1], buffer, 8);
if (ret < 0) {
printf("main: error: write: object %lu\n", i);
exit(-1);
if (write(spray[i][1], buffer, 8) < 0) {
error("main: spray one: write");
}
}