40 lines
910 B
C
40 lines
910 B
C
// PUBLIC DOMAIN CODE
|
|
//
|
|
// A tiny program that disable transparent huge pages on arbitrary processes
|
|
// thpoff echo 1 : will run echo 1 with SET_THP_DISABLE true on the process
|
|
#include <stdio.h>
|
|
#include <sys/prctl.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
|
|
int main( int argc, char **argv) {
|
|
if (argc < 2) {
|
|
fprintf(stderr, "ERROR: expecting at least 1 argument!\n");
|
|
return -1;
|
|
}
|
|
prctl(PR_SET_THP_DISABLE, 1, 0, 0, 0);
|
|
|
|
char* newargv[argc];
|
|
int i;
|
|
|
|
newargv[argc-1] = NULL;
|
|
for (i=1; i<argc; i++) {
|
|
newargv[i-1] = argv[i];
|
|
}
|
|
|
|
execvp(argv[1], newargv);
|
|
|
|
if (errno == ENOENT) {
|
|
fprintf(stderr, "ERROR: file not found\n");
|
|
return -1;
|
|
} else if (errno == EACCES) {
|
|
fprintf(stderr, "ERROR: can not run file\n");
|
|
return -1;
|
|
} else if (errno > 0) {
|
|
fprintf(stderr, "ERROR: %i errno while attempting to run file\n", errno);
|
|
return -1;
|
|
}
|
|
|
|
return 0;
|
|
}
|