unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.9)
Page:
Section:
Apropos / Subsearch:
optional field



System Calls                                            semids(2)



NAME
     semids - discover all semaphore identifiers

SYNOPSIS
     #include <sys/sem.h>

     int semids(int *buf, uint_t nids, uint_t *pnids);

DESCRIPTION
     The semids() function copies all active  semaphore  identif-
     iers  from the system into the user-defined buffer specified
     by buf, provided that the number of such identifiers is  not
     greater  than the number of integers the buffer can contain,
     as specified by nids.  If the size of the buffer is insuffi-
     cient  to contain all of the active semaphore identifiers in
     the system, none are copied.

     Whether or not the size of the buffer is sufficient to  con-
     tain all of them, the number of active semaphore identifiers
     in the system is copied into the unsigned integer pointed to
     by pnids.

     If nids is 0 or less than the  number  of  active  semaphore
     identifiers in the system, buf is ignored.

RETURN VALUES
     Upon successful completion, semids() returns 0.   Otherwise,
     -1 is returned and errno is set to indicate the error.

ERRORS
     The semids() function will fail if:

     EFAULT
           The  buf  or  pnids  argument  points  to  an  illegal
           address.

USAGE
     The semids() function returns a snapshot of all  the  active
     semaphore  identifiers in the system.  More may be added and
     some may be removed before they can be used by the caller.

EXAMPLES
     Example 1: semids() example

     This is sample C code indicating how  to  use  the  semids()
     function.

     void
     examine_semids()
     {
          int *ids = NULL;
          uint_t nids = 0;



SunOS 5.9            Last change: 8 Mar 2000                    1






System Calls                                            semids(2)



          uint_t n;
          int i;

          for (;;) {
               if (semids(ids, nids, &n) != 0) {
                    perror("semids");
                    exit(1);
               }
               if (n <= nids)     /* we got them all */
                    break;
               /* we need a bigger buffer */
               ids = realloc(ids, (nids = n) * sizeof (int));
          }

          for (i = 0; i < n; i++)
               process_semid(ids[i]);

          free(ids);
     }

ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | Async-Signal-Safe           |
    |_____________________________|_____________________________|


SEE ALSO
     ipcrm(1), ipcs(1), intro(2), semctl(2), semget(2), semop(2),
     attributes(5)





















SunOS 5.9            Last change: 8 Mar 2000                    2