86 if (IPC_PRIVATE == key_) {
87 EL((
ASSAERR,
"Not intended for private semaphores\n"));
90 else if (key_ == (key_t) -1) {
91 EL((
ASSAERR,
"Probably an ftok() error by caller\n"));
99 if ( (
m_id = semget (
m_key, 3, 0666 | IPC_CREAT)) < 0) {
100 EL((
ASSAERR,
"Permission problem or kernel tables full\n"));
122 if (errno == EINVAL) {
135 if ((semval = semctl (
m_id, 1, GETVAL, 0)) < 0) {
148 semctrl_arg.val = initval_;
150 if (semctl (
m_id, 0, SETVAL, semctrl_arg) < 0) {
157 if (semctl (
m_id, 1, SETVAL, semctrl_arg) < 0) {
166 EL((
ASSAERR,
"Error on semop (ndcreate)\n"));
178 if (IPC_PRIVATE == key_) {
179 EL((
ASSAERR,
"Not intended for private semaphores\n"));
182 else if (key_ == (key_t) -1) {
183 EL((
ASSAERR,
"Probably an ftok() error by caller\n"));
208 if (
m_id < 0 ||
m_key == ((key_t) -1) )
return;
210 if (semctl (
m_id, 0, IPC_RMID, 0) < 0) {
225 if (
m_id < 0)
return;
239 if ((semval = semctl (
m_id, 1, GETVAL, 0)) < 0) {
273 if ((semval = semctl (
m_id, 1, GETVAL, 0)) < 0) {
280 if ((
m_op_op[0].sem_op = value_) == 0) {
281 EL((
ASSAERR,
"Can't have value_ == 0\n"));
297 std::ostringstream msg;
298 msg <<
"\n\n\tKey.....: ";
300 if (
m_key == (key_t) -1) {
304 msg <<
"0x" << std::hex <<
m_key << std::dec;
307 msg <<
"\n\tID......: " <<
m_id <<
"\n\n";
309 if (m_id >= 0 &&
m_key >= (key_t) -1) {
310 msg <<
"\tsemval [0]\tproc counter[1]\tlock [2]\n"
311 <<
"\t----------\t---------------\t--------\n";
314 msg <<
"\t " << semctl (m_id, 0, GETVAL)
315 <<
"\t\t " << semctl (m_id, 1, GETVAL)
316 <<
"\t\t " << semctl (m_id, 2, GETVAL);
319 msg <<
"Semaphore id = -1. No info is available.";
322 DL((
SEM,
"%s\n\n", msg.str ().c_str ()));