view meta_connector/example/synchronizedQueueContext.h @ 26:b9f88346cecd support auto stub generation

generate stub
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Mon, 02 Nov 2015 04:02:13 +0900
parents
children
line wrap: on
line source

/* Context definition for synchronized queue example */

#include <pthread.h>
#define ALLOCATE_SIZE 1000

enum Code {
    Code1,
    Code2,
    Code3,
    Code4,
    Code5,
    Code6,
    Code7,
    Code8,
    Code9,
    Code10,
    Code11,
    Sender,
    Put,
    ContinuePut,
    Receiver,
    Get,
    ContinueGet,
    Thread_exit,
    Exit,
};

enum UniqueData {
    Allocate,
    Queue,
    Count,
    TimeOut,
};

struct Context {
    int codeNum;
    __code (**code) (struct Context *);
    void* heapStart;
    void* heap;
    long dataSize;
    int dataNum;
    union Data* head;
    union Data** data;
};

union Data {
    long count;
    long timeOut;
    struct Queue {
        struct Element* first;
        struct Element* last;
        int   count;
        pthread_mutex_t mutex;
        pthread_cond_t cond;
    } queue;
    struct Element {
        int value;
        struct Element* next;
    } element;
    struct Allocate {
        long size;
        enum Code after_put;
        enum Code after_get;
        enum Code after_fail;
    } allocate;
};