semstat: A semtool companion program Next: 6.4.4 Shared Memory
Up: 6.4.3 Semaphores
Previous: The Sourcesemstat: A semtool companion programAs an added bonus, the source code to a companion program called semstat
is provided next. The semstat program displays the values of each of the
semaphores in the set created by semtool./*****************************************************************************
Excerpt from "Linux Programmer's Guide - Chapter 6"
(C)opyright 1994-1995, Scott Burkett
*****************************************************************************
MODULE: semstat.c
*****************************************************************************
A companion command line tool for the semtool package. semstat displays
the current value of all semaphores in the set created by semtool.
*****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int get_sem_count(int sid);
void show_sem_usage(int sid);
int get_sem_count(int sid);
void dispval(int sid);
int main(int argc, char *argv[])
{
key_t key;
int semset_id;
/* Create unique key via call to ftok() */
key = ftok(".", 's');
/* Open the semaphore set - do not create! */
if((semset_id = semget(key, 1, 0666)) == -1)
{
printf("Semaphore set does not exist\n");
exit(1);
}
show_sem_usage(semset_id);
return(0);
}
void show_sem_usage(int sid)
{
int cntr=0, maxsems, semval;
maxsems = get_sem_count(sid);
while(cntr < maxsems) {
semval = semctl(sid, cntr, GETVAL, 0);
printf("Semaphore #%d: --> %d\n", cntr, semval);
cntr++;
}
}
int get_sem_count(int sid)
{
int rc;
struct semid_ds mysemds;
union semun semopts;
/* Get current values for internal data structure */
semopts.buf = &mysemds;
if((rc = semctl(sid, 0, IPC_STAT, semopts)) == -1) {
perror("semctl");
exit(1);
}
/* return number of semaphores in set */
return(semopts.buf->sem_nsems);
}
void dispval(int sid)
{
int semval;
semval = semctl(sid, 0, GETVAL, 0);
printf("semval is %d\n", semval);
}Converted on:Fri Mar 29 14:43:04 EST 1996
Wyszukiwarka
Podobne podstrony:
node64node64node64node64 1node64 23D247UZAFJK737ACWMMOTR7Y4SKWTRJ2C6VWFAnode64 M5YLGUH5SPJJCD4SJ4JGOWRCD3IC5ACVRLZVTWYnode64 N6SEZLE2MYJK7TQARQSTXG2BTUZD2FXTJDDKGBIwięcej podobnych podstron