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                                            shmids(2)



NAME
     shmids - discover all shared memory identifiers

SYNOPSIS
     #include <sys/shm.h>

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

DESCRIPTION
     The shmids() function copies all active shared memory  iden-
     tifiers  from the system into the user-defined buffer speci-
     fied by buf, provided that the number of such identifiers is
     not  greater than the number of integers the buffer can con-
     tain, as specified by nids.  If the size of  the  buffer  is
     insufficient  to  contain  all  of  the active shared memory
     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 shared memory iden-
     tifiers in the system is copied into  the  unsigned  integer
     pointed to by pnids.

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

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

ERRORS
     The shmids() function will fail if:

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

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

EXAMPLES
     Example 1: shmids() example

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

     void
     examine_shmids()
     {
          int *ids = NULL;



SunOS 5.9            Last change: 8 Mar 2000                    1






System Calls                                            shmids(2)



          uint_t nids = 0;
          uint_t n;
          int i;

          for (;;) {
               if (shmids(ids, nids, &n) != 0) {
                    perror("shmids");
                    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_shmid(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), shmctl(2), shmget(2), shmop(2),
     attributes(5)




















SunOS 5.9            Last change: 8 Mar 2000                    2