MCPcopy Create free account
hub / github.com/decaf-emu/decaf-emu / sendMessage

Function sendMessage

src/libdecaf/src/ios/kernel/ios_kernel_messagequeue.cpp:234–260  ·  view source on GitHub ↗

* Insert message to the back of the message queue. */

Source from the content-addressed store, hash-verified

232 * Insert message to the back of the message queue.
233 */
234Error
235sendMessage(phys_ptr<MessageQueue> queue,
236 Message message,
237 MessageFlags flags)
238{
239 while (queue->used == queue->size) {
240 if (flags & MessageFlags::NonBlocking) {
241 return Error::Max;
242 }
243
244 internal::sleepThread(phys_addrof(queue->sendQueue));
245 internal::reschedule();
246
247 auto thread = internal::getCurrentThread();
248 if (thread->context.queueWaitResult != Error::OK) {
249 return thread->context.queueWaitResult;
250 }
251 }
252
253 auto index = (queue->first + queue->used) % queue->size;
254 queue->messages[index] = message;
255 queue->used++;
256
257 internal::wakeupOneThread(phys_addrof(queue->receiveQueue), Error::OK);
258 internal::reschedule();
259 return Error::OK;
260}
261
262
263/**

Callers 4

IOS_SendMessageFunction · 0.85
dispatchResourceReplyFunction · 0.85
dispatchRequestFunction · 0.85
timerThreadEntryFunction · 0.85

Calls 5

sleepThreadFunction · 0.85
phys_addrofFunction · 0.85
rescheduleFunction · 0.85
wakeupOneThreadFunction · 0.85
getCurrentThreadFunction · 0.70

Tested by

no test coverage detected