/* * setup() - performs all the ONE TIME setup for this test. */ void setup(void) { /* capture signals */ tst_sig(NOFORK, DEF_HANDLER, cleanup); /* Set up the expected error numbers for -e option */ TEST_EXP_ENOS(exp_enos); /* Pause if that option was specified */ TEST_PAUSE; /* * Create a temporary directory and cd into it. * This helps to ensure that a unique msgkey is created. * See ../lib/libipc.c for more information. */ tst_tmpdir(); msgkey = getipckey(); maxmsgs = get_max_msgqueues(); if (maxmsgs < 0) tst_brkm(TBROK, cleanup, "maxmsgs is zero"); msg_q_arr = (int *)calloc(maxmsgs, sizeof(int)); if (msg_q_arr == NULL) { tst_brkm(TBROK, cleanup, "Couldn't allocate memory " "for msg_q_arr: calloc() failed"); } }
/* * setup() - performs all the ONE TIME setup for this test. */ void setup(void) { int msg_q; /* capture signals */ tst_sig(NOFORK, DEF_HANDLER, cleanup); /* Set up the expected error numbers for -e option */ TEST_EXP_ENOS(exp_enos); /* Pause if that option was specified */ TEST_PAUSE; /* * Create a temporary directory and cd into it. * This helps to ensure that a unique msgkey is created. * See ../lib/libipc.c for more information. */ tst_tmpdir(); msgkey = getipckey(); maxmsgs = get_max_msgqueues(); msg_q_arr = (int *)calloc(maxmsgs, sizeof (int)); if (msg_q_arr == NULL) { tst_brkm(TBROK, cleanup, "Couldn't allocate memory " "for msg_q_arr: calloc() failed"); } /* * Use a while loop to create the maximum number of queues. * When we get an error, check for ENOSPC. */ while((msg_q = msgget(msgkey + num_queue, IPC_CREAT|IPC_EXCL)) != -1) { msg_q_arr[num_queue] = msg_q; if (num_queue == maxmsgs) { tst_resm(TINFO, "The maximum number of message" " queues (%d) has been reached", maxmsgs); break; } num_queue++; } /* * if we have something other than ENOSPC, then something else is * wrong. */ if (errno != ENOSPC) { tst_brkm(TBROK, cleanup, "Didn't get ENOSPC in test setup" " - errno = %d : %s", errno, strerror(errno)); } }