Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_sig.c
Show First 20 Lines • Show All 3,247 Lines • ▼ Show 20 Lines | sysctl_debug_num_cores_check (SYSCTL_HANDLER_ARGS) | ||||
if (new_val < 0) | if (new_val < 0) | ||||
new_val = 0; | new_val = 0; | ||||
num_cores = new_val; | num_cores = new_val; | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_debug, OID_AUTO, ncores, CTLTYPE_INT|CTLFLAG_RW, | SYSCTL_PROC(_debug, OID_AUTO, ncores, CTLTYPE_INT|CTLFLAG_RW, | ||||
0, sizeof(int), sysctl_debug_num_cores_check, "I", ""); | 0, sizeof(int), sysctl_debug_num_cores_check, "I", ""); | ||||
#define GZ_SUFFIX ".gz" | #define GZIP_SUFFIX ".gz" | ||||
#define ZSTD_SUFFIX ".zst" | |||||
int compress_user_cores = 0; | int compress_user_cores = 0; | ||||
static int | static int | ||||
sysctl_compress_user_cores(SYSCTL_HANDLER_ARGS) | sysctl_compress_user_cores(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int error, val; | int error, val; | ||||
val = compress_user_cores; | val = compress_user_cores; | ||||
error = sysctl_handle_int(oidp, &val, 0, req); | error = sysctl_handle_int(oidp, &val, 0, req); | ||||
if (error != 0 || req->newptr == NULL) | if (error != 0 || req->newptr == NULL) | ||||
return (error); | return (error); | ||||
if (val != 0 && !compressor_avail(val)) | if (val != 0 && !compressor_avail(val)) | ||||
return (EINVAL); | return (EINVAL); | ||||
compress_user_cores = val; | compress_user_cores = val; | ||||
return (error); | return (error); | ||||
} | } | ||||
SYSCTL_PROC(_kern, OID_AUTO, compress_user_cores, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_kern, OID_AUTO, compress_user_cores, CTLTYPE_INT | CTLFLAG_RWTUN, | ||||
0, sizeof(int), sysctl_compress_user_cores, "I", | 0, sizeof(int), sysctl_compress_user_cores, "I", | ||||
"Enable compression of user corefiles (" __XSTRING(COMPRESS_GZIP) " = gzip)"); | "Enable compression of user corefiles (" | ||||
__XSTRING(COMPRESS_GZIP) " = gzip, " | |||||
__XSTRING(COMPRESS_ZSTD) " = zstd)"); | |||||
int compress_user_cores_level = 6; | int compress_user_cores_level = 6; | ||||
SYSCTL_INT(_kern, OID_AUTO, compress_user_cores_level, CTLFLAG_RWTUN, | SYSCTL_INT(_kern, OID_AUTO, compress_user_cores_level, CTLFLAG_RWTUN, | ||||
&compress_user_cores_level, 0, | &compress_user_cores_level, 0, | ||||
"Corefile compression level"); | "Corefile compression level"); | ||||
/* | /* | ||||
* Protect the access to corefilename[] by allproc_lock. | * Protect the access to corefilename[] by allproc_lock. | ||||
▲ Show 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | for (i = 0; format[i] != '\0'; i++) { | ||||
default: | default: | ||||
sbuf_putc(&sb, format[i]); | sbuf_putc(&sb, format[i]); | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
sx_sunlock(&corefilename_lock); | sx_sunlock(&corefilename_lock); | ||||
free(hostname, M_TEMP); | free(hostname, M_TEMP); | ||||
if (compress == COMPRESS_GZIP) | if (compress == COMPRESS_GZIP) | ||||
sbuf_printf(&sb, GZ_SUFFIX); | sbuf_printf(&sb, GZIP_SUFFIX); | ||||
else if (compress == COMPRESS_ZSTD) | |||||
sbuf_printf(&sb, ZSTD_SUFFIX); | |||||
if (sbuf_error(&sb) != 0) { | if (sbuf_error(&sb) != 0) { | ||||
log(LOG_ERR, "pid %ld (%s), uid (%lu): corename is too " | log(LOG_ERR, "pid %ld (%s), uid (%lu): corename is too " | ||||
"long\n", (long)pid, comm, (u_long)uid); | "long\n", (long)pid, comm, (u_long)uid); | ||||
sbuf_delete(&sb); | sbuf_delete(&sb); | ||||
free(name, M_TEMP); | free(name, M_TEMP); | ||||
return (ENOMEM); | return (ENOMEM); | ||||
} | } | ||||
sbuf_finish(&sb); | sbuf_finish(&sb); | ||||
▲ Show 20 Lines • Show All 361 Lines • Show Last 20 Lines |