Lines Matching refs:data

21 bool initManagedData(bt_managed_data *data)
23 data->readCount = 0;
24 data->writeCount = 0;
26 data->readCountVar = 0;
27 data->writeCountVar = 0;
28 data->readerQueueVar = 0;
29 data->readerVar = 0;
30 data->writerVar = 0;
32 if ((data->readCountSem = create_sem(1, "Read Counter")) < 0)
35 if ((data->writeCountSem = create_sem(1, "Write Counter")) < 0)
37 delete_sem(data->readCountSem);
41 if ((data->readerQueue = create_sem(1, "Read Queue")) < 0)
43 delete_sem(data->writeCountSem);
44 delete_sem(data->readCountSem);
48 if ((data->reader = create_sem(1, "Single Reader")) < 0)
50 delete_sem(data->readerQueue);
51 delete_sem(data->writeCountSem);
52 delete_sem(data->readCountSem);
56 if ((data->writer = create_sem(1, "Writer")) < 0)
58 delete_sem(data->reader);
59 delete_sem(data->readerQueue);
60 delete_sem(data->writeCountSem);
61 delete_sem(data->readCountSem);
68 void closeManagedData(bt_managed_data *data)
70 data->readCount = data->writeCount = 0;
72 delete_sem(data->writer);
73 delete_sem(data->reader);
74 delete_sem(data->readerQueue);
75 delete_sem(data->writeCountSem);
76 delete_sem(data->readCountSem);
79 void beginReading(bt_managed_data *data)
81 btLock(data->readerQueue, &data->readerQueueVar);
82 btLock(data->reader, &data->readerVar);
83 btLock(data->readCountSem, &data->readCountVar);
85 data->readCount++;
86 if (data->readCount == 1)
87 btLock(data->writer, &data->writerVar);
89 btUnlock(data->readCountSem, &data->readCountVar);
90 btUnlock(data->reader, &data->readerVar);
91 btUnlock(data->readerQueue, &data->readerQueueVar);
94 void endReading(bt_managed_data *data)
96 btLock(data->readCountSem, &data->readCountVar);
98 data->readCount--;
99 if (data->readCount == 0)
100 btUnlock(data->writer, &data->writerVar);
102 btUnlock(data->readCountSem, &data->readCountVar);
105 void beginWriting(bt_managed_data *data)
107 btLock(data->writeCountSem, &data->writeCountVar);
109 data->writeCount++;
110 if (data->writeCount == 1)
111 btLock(data->reader, &data->readerVar);
113 btUnlock(data->writeCountSem, &data->writeCountVar);
114 btLock(data->writer, &data->writerVar);
117 void endWriting(bt_managed_data *data)
119 btUnlock(data->writer, &data->writerVar);
120 btLock(data->writeCountSem, &data->writeCountVar);
122 data->writeCount--;
123 if (data->writeCount == 0)
124 btUnlock(data->reader, &data->readerVar);
126 btUnlock(data->writeCountSem, &data->writeCountVar);