show resource label when setrlimit fail

pull/12/head
yuqing 2017-01-04 09:33:17 +08:00
parent 35a00125f5
commit af49c430a6
2 changed files with 42 additions and 4 deletions

View File

@ -157,8 +157,8 @@ int id_generator_init_extra_ex(struct idg_context *context, const char *filename
((int64_t)1 << sn_bits); ((int64_t)1 << sn_bits);
context->sn_mask = ((int64_t)1 << sn_bits) - 1; context->sn_mask = ((int64_t)1 << sn_bits) - 1;
logDebug("mid: 0x%08X, masked_mid: 0x%08llX, extra_mask: 0x%08llX, " logDebug("mid: 0x%08X, masked_mid: 0x%08"PRIX64", extra_mask: 0x%08"PRIX64", "
"sn_mask: 0x%08llX\n", mid, context->masked_mid, "sn_mask: 0x%08"PRIX64, mid, context->masked_mid,
context->extra_mask, context->sn_mask); context->extra_mask, context->sn_mask);
return 0; return 0;

View File

@ -1323,10 +1323,48 @@ int set_rlimit(int resource, const rlim_t value)
limit.rlim_cur = value; limit.rlim_cur = value;
if (setrlimit(resource, &limit) != 0) if (setrlimit(resource, &limit) != 0)
{ {
const char *label;
switch (resource)
{
case RLIMIT_CPU:
label = "CPU time in sec";
break;
case RLIMIT_STACK:
label = "max stack size";
break;
case RLIMIT_DATA:
label = "max data size";
break;
case RLIMIT_FSIZE:
label = "max file size";
break;
case RLIMIT_RSS:
label = "max RSS";
break;
case RLIMIT_CORE:
label = "max core file size";
break;
case RLIMIT_NPROC:
label = "max processes";
break;
case RLIMIT_NOFILE:
label = "max open files";
break;
case RLIMIT_MSGQUEUE:
label = "max bytes in msg queues";
break;
case RLIMIT_MEMLOCK:
label = "max locked-in-memory address space";
break;
default:
label = "unkown";
break;
}
logError("file: "__FILE__", line: %d, " \ logError("file: "__FILE__", line: %d, " \
"call setrlimit fail, resource=%d, value=%d, " \ "call setrlimit fail, resource=%d (%s), value=%"PRId64", " \
"errno: %d, error info: %s", \ "errno: %d, error info: %s", \
__LINE__, resource, (int)value, \ __LINE__, resource, label, (int64_t)value, \
errno, STRERROR(errno)); errno, STRERROR(errno));
return errno != 0 ? errno : EPERM; return errno != 0 ? errno : EPERM;
} }