[so] [IPC2] msgbuf_t
Daniel Baluta
daniel.baluta at gmail.com
Sat Apr 12 22:24:21 EEST 2008
am zis in laborator :D , de fapt in exercitiile din laborator
libs/lin/messageQueue.c
2008/4/12 Lucian Adrian Grijincu <lucian.grijincu at gmail.com>:
> 2008/4/12 Daniel Baluta <daniel.baluta at gmail.com>:
> > Salut,
> >
> > In laboratorul de IPC2 aveam definita structura
> >
> > typedef struct msgbuf
> > {
> > long type;
> > char mtext[0];
> > } msgbuf_t;
> >
>
> Scuze, unde era definită structura asta?
>
> Standardele care definesc modul de functionare a msgsnd, msgrcv (SVr4,
> POSIX.1-2001) spun în mod explicit:
>
> The msgp argument is a pointer to *caller-defined* structure of the
> fol‐
> lowing general form:
>
> struct msgbuf {
> long mtype; /* message type, must be > 0 */
> char mtext[1]; /* message data */
> };
>
> Nici un header sistem nu defineste structura asta pentru a nu obliga
> programatorii care o vor folosi să recurgă la trucuri speciale ca
> malloc(sizeof(struct msgbuf) + aditional_payload) sau char mtext[0].
>
> Singurul lucru care e cerut e ca structura să aibă minimum 4 bytes, și
> dacă se interpretează acești 4B ca un «signed long int» valoarea
> rezultată trebuie să fie > 0 (pentru că msgrcv cu tipul <= 0 are o
> semnificație aparte).
>
> Kernelul cere să știe dimensiunea payloadului adițional (care poate fi
> zero: «The mtext field is an array (or other structure) whose size
> is specified by msgsz, a non-negative integer value.»). Problema cu
> abordarea asta e că se pierde "type checking"-ul pe care l-ar fi putut
> impune un compilator C.
>
> >
> > Pentru a intelege mai bine campul mtext cititi threadul [1] din lista
> de
> > PSO.
> >
> > [1] http://cursuri.cs.pub.ro/pipermail/pso/2008-April/002288.html
>
> Anyways, +1
>
> --
> Lucian
> _______________________________________________
> so mailing list
> so at cursuri.cs.pub.ro
> http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/so
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/so/attachments/20080412/e1ead173/attachment-0001.htm
More information about the so
mailing list