| 96 |
key = ftok(conf_file, proj_id + retry_cnt); |
key = ftok(conf_file, proj_id + retry_cnt); |
| 97 |
if (key == -1) |
if (key == -1) |
| 98 |
{ |
{ |
| 99 |
log_error("ftok(%s %d) error (%d)\n", conf_file, proj_id, errno); |
log_error("ftok(%s %d) error (%d)\n", conf_file, proj_id + retry_cnt, errno); |
| 100 |
return -2; |
return -3; |
| 101 |
} |
} |
| 102 |
|
|
| 103 |
p_menu_set->shmid = shmget(key, size, IPC_CREAT | IPC_EXCL | 0600); |
p_menu_set->shmid = shmget(key, size, IPC_CREAT | IPC_EXCL | 0600); |
|
|
|
| 104 |
if (p_menu_set->shmid == -1) |
if (p_menu_set->shmid == -1) |
| 105 |
{ |
{ |
| 106 |
if (errno != EEXIST || retry_cnt + 1 >= MENU_SHMGET_RETRY_LIMIT) |
if (errno != EEXIST || retry_cnt + 1 >= MENU_SHMGET_RETRY_LIMIT) |
| 107 |
{ |
{ |
| 108 |
log_error("shmget(conf_file=%s, size=%d) error (%d) %d times\n", |
log_error("shmget(conf_file=%s, size=%d) error (%d) %d times\n", |
| 109 |
conf_file, size, errno, retry_cnt + 1); |
conf_file, size, errno, retry_cnt + 1); |
| 110 |
break; |
return -3; |
| 111 |
} |
} |
| 112 |
log_error("shmget(conf_file=%s, proj_id=%d, key=0x%x, size=%d) error (%d), retry ...\n", |
log_error("shmget(conf_file=%s, proj_id=%d, key=0x%x, size=%d) error (%d), retry ...\n", |
| 113 |
conf_file, proj_id + retry_cnt, key, size, errno); |
conf_file, proj_id + retry_cnt, key, size, errno); |
| 1384 |
|
|
| 1385 |
detach_menu_shm(p_menu_set); |
detach_menu_shm(p_menu_set); |
| 1386 |
|
|
| 1387 |
if (shmctl(shmid, IPC_RMID, NULL) == -1) |
if (shmid != 0 && shmctl(shmid, IPC_RMID, NULL) == -1) |
| 1388 |
{ |
{ |
| 1389 |
log_error("shmctl(shmid=%d, IPC_RMID) error (%d)\n", shmid, errno); |
log_error("shmctl(shmid=%d, IPC_RMID) error (%d)\n", shmid, errno); |
| 1390 |
return -1; |
return -1; |