[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