syscallt.h


/*************************************************************************
*                                                                        *
*   Header: syscall.h                                                    *
*                                                                        *
*   realizzato dal Gruppo 17 di Lab2 Anno Accademico 1995/96             *
*                                                                        *
*   Lorenzo     Claudio       Valerio    Riccardo    Emiliano            *
*   Coronati    Lanconelli    Paolini    Solmi       Trentini            *
*                                                                        *
**************************************************************************/

#ifndef _SYSCT_H
#define _SYSCT_H

#include "../h/types.h"
#include "../h/supconst.h"

#if VBUFNO == 1
#define  NEXTVMSG(tproc)  ( tproc->T_vbuffers )
#else
#define  NEXTVMSG(tproc) nextVmsg(tproc)
#endif

/* identificativi del vqueue_t */
#define VQ_SEND     1
#define VQ_RECV     2
#define VQ_REPLY    3
#define VQ_RR       4

typedef struct vqueue_t {
    struct vqueue_t *vq_next;
    int vq_type;        /* utilizzato per gestire il caso particolare della Receive & Reply */
    thr_t *vq_from;
    thr_t *vq_to;
    state_t *vq_state;   /* utilizzato per memorizzare i risultati */
    void *vq_address;
} vqueue_t;

/* identificativi del vmsg_t */
#define FREETAG     0
#define SENDTAG     1
#define REPLYTAG    2

typedef struct vmsg_t {
    char vmsg_buffer[MAXMSGLEN];    /* e` importante che sia il primo campo */
    int vmsg_type;         /* FREETAG, SENDTAG o REPLYTAG */
    thr_t *vmsg_from;
    thr_t *vmsg_to;
    state_t *vmsg_state; /* utilizzato per memorizzare il risultato */
} vmsg_t;

#ifdef  THR_DENY
#define INTERNAL(t, x)  ( (t)->T_mainthread == (x) || (t)->T_sysservt == (x) || \
                        (t)->T_memmant == (x) || (t)->T_progt == (x) )
#else
#define INTERNAL(t, x)  ( (x)->t_process == (t)->T_process )
#endif

#endif



[INDICE CODICE]