OVH Cloud OVH Cloud

[FreeBSD] sem_open => bas system call

9 réponses
Avatar
SoULiaNe
Bonjour, voila je n'arrive pas a utiliser la primitive sem_open...

Le systeme : FreeBSD 5.3

Le man sem_open donne :
sem_t * sem_open(const char *name, int oflag,...)

J'essaie de l'utiliser avec :
sem_open("trucmachin", 0);

ou bien avec :
sem_open("trucmachin", O_CREAT, 0200, 1);

Et voilà ce que ca me donne a l'execution :

Bad system call (core dumped)

ce qui correspond au signal SIGSYS.

J'ai l'impression que ce n'est pas de ma faute si ca marche pas,
mais je peux me tromper... Bref, que faire ?
J'ai deja #include <sempaphore.h> dans mon entete, je vois pas quoi
mettre de plus...

PS : je ne sais pas si c'est lié, mais si je met S_IWUSR à la place
de 0600 (car c'est un mode_t), ben le S_IWUSR il est pas reconnu a
la compilation, alors que j'ai #include <sys/types.h>. A quoi est-ce
du ca ?

9 réponses

Avatar
SoULiaNe

Et voilà ce que ca me donne a l'execution :
Bad system call (core dumped)
ce qui correspond au signal SIGSYS.


J'ai oublie de dire ce qu'en pensait gdb :

#0 0x00000000403a9488 ib ksem_open () from /lib/libc.so.5

Avatar
Jacques Caron
Salut,

On Tue, 11 Jan 2005 00:44:49 +0100, SoULiaNe wrote:

Bonjour, voila je n'arrive pas a utiliser la primitive sem_open...
[...]

Bad system call (core dumped)


Le kernel est bien configuré avec SYSVSEM? C'est par défaut dans GENERIC
de nos jours, mais on ne sait jamais...

Que disent ipcs -a et sysctl -a | grep sem ?

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
SoULiaNe

Le kernel est bien configuré avec SYSVSEM? C'est par défaut dans
GENERIC de nos jours, mais on ne sait jamais...


Je ne suis pas du tout l'admin de la machine, je ne sais pas...
C'est le serveur de la fac et j'y ai juste un compte d'étudiant pour
travailler.

Que disent ipcs -a


plein de lignes, une liste de messages, shared memory et semaphore...

et sysctl -a | grep sem ?


la commande sysctl n'existe pas me dit la bash, le man existe mais
je n'ai surement pas le droit de l'executer.

Avatar
Jacques Caron
Re,

On Tue, 11 Jan 2005 01:11:25 +0100, Jacques Caron wrote:

Salut,

On Tue, 11 Jan 2005 00:44:49 +0100, SoULiaNe wrote:

Bonjour, voila je n'arrive pas a utiliser la primitive sem_open...
[...]

Bad system call (core dumped)



En fait, j'avais un peu trop vite pensé qu'il s'agissait de sémaphores
SysV, mais ce n'est pas ça du tout. Les sémaphores SysV sont manipulés
avec semctl, semget, semop.

La manpage de sem_open dit pour sa part:

DESCRIPTION
The sem_open(), sem_close(), and sem_unlink() functions are not
supported
by this implementation.
[...]
ERRORS
sem_open(), sem_close(), and sem_unlink() will fail:

[ENOSYS] Function not supported by this implementation.

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/


Avatar
naddy
SoULiaNe wrote:

J'essaie de l'utiliser avec :
sem_open("trucmachin", 0);

ou bien avec :
sem_open("trucmachin", O_CREAT, 0200, 1);


sem_open(3):

...
BUGS
This implementation places strict requirements on the value of name: it
must begin with a slash (`/'), contain no other slash characters, and be
less than 14 characters in length not including the terminating null
character.
...

PS : je ne sais pas si c'est lié, mais si je met S_IWUSR à la place
de 0600 (car c'est un mode_t), ben le S_IWUSR il est pas reconnu a
la compilation, alors que j'ai #include <sys/types.h>. A quoi est-ce
du ca ?


S_IWUSR est défini dans <sys/stat.h>.

--
Christian "naddy" Weisgerber

Avatar
SoULiaNe

DESCRIPTION
The sem_open(), sem_close(), and sem_unlink() functions are not
supported
by this implementation.


Bah, moi j'ai pas ça dans mon manpage, il me dit par contre que
c'est apparu avec FreeBSD 5.0, mais je travaille sur le 5.3 donc
c'est bon... Enfin bref, merci pour votre aide, je vais essayer de
voir avec semget et coe mais ca a l'air beaucoup plus dur a utiliser.

Avatar
naddy
Jacques Caron wrote:

Bonjour, voila je n'arrive pas a utiliser la primitive sem_open...
[...]

Bad system call (core dumped)


Le kernel est bien configuré avec SYSVSEM?


... avec P1003_1B_SEMAPHORES?

sem_open() concerne les sémaphores POSIX, qui sont tout différents
des sémaphores SysV.

--
Christian "naddy" Weisgerber


Avatar
SoULiaNe

BUGS
This implementation places strict requirements on the value of name: it
must begin with a slash (`/'), contain no other slash characters, and be
less than 14 characters in length not including the terminating null
character.
...


Ah ? Ca doit etre ca alors... mais bon, maintenant que j'ai fait la
chose avec les semaphores ipc system v, j'ai pas envie de tout
rechanger :)

Pouvez vous m'expliquer s'il vous plait, les noms que l'on donne au
semaphores et autres IPC, ca n'a rien a voir avec des noms de
fichiers n'est ce pas ?

Avatar
Vincent Bernat
OoO En cette nuit nuageuse du mardi 11 janvier 2005, vers 01:57,
SoULiaNe disait:

et sysctl -a | grep sem ?


la commande sysctl n'existe pas me dit la bash, le man existe mais
je n'ai surement pas le droit de l'executer.


/usr/sbin/sysctl
--
BOFH excuse #89:
Electromagnetic energy loss