MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / dev_thread

Function dev_thread

src/sana2.cpp:1530–1571  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1528}
1529
1530static int dev_thread (void *devs)
1531{
1532 struct s2devstruct *dev = (struct s2devstruct*)devs;
1533
1534 uae_set_thread_priority (NULL, 1);
1535 dev->thread_running = 1;
1536 uae_sem_post (&dev->sync_sem);
1537 for (;;) {
1538 TrapContext *ctx = (TrapContext*)read_comm_pipe_pvoid_blocking(&dev->requests);
1539 uae_u8 *iobuf = (uae_u8*)read_comm_pipe_pvoid_blocking(&dev->requests);
1540 uaecptr request = (uaecptr)read_comm_pipe_u32_blocking (&dev->requests);
1541 uae_sem_wait (&change_sem);
1542 if (!request) {
1543 dev->thread_running = 0;
1544 uae_sem_post (&dev->sync_sem);
1545 uae_sem_post (&change_sem);
1546 write_log (_T("%s: dev_thread killed\n"), getdevname ());
1547 return 0;
1548 }
1549 struct priv_s2devstruct *pdev = getps2devstruct(ctx, iobuf, request);
1550 asyncreq *ar = get_async_request (dev, request, 1);
1551 if (ar) {
1552 storerequest(ctx, ar->request, request);
1553 uae_ReplyMsg (request);
1554 release_async_request (dev, request);
1555 rem_async_packet (dev, request);
1556 } else if (dev_do_io(ctx, dev, iobuf, request, 0) == 0) {
1557 storerequest(ctx, iobuf, request);
1558 uae_ReplyMsg (request);
1559 rem_async_packet (dev, request);
1560 } else {
1561 add_async_request (dev, iobuf, request);
1562 dev->ctx = ctx;
1563 ethernet_trigger (pdev->td, dev->sysdata);
1564 dev->ctx = NULL;
1565 iobuf = NULL;
1566 }
1567 trap_background_set_complete(ctx);
1568 uae_sem_post (&change_sem);
1569 }
1570 return 0;
1571}
1572
1573static uae_u32 REGPARAM2 dev_init_2 (TrapContext *ctx)
1574{

Callers

nothing calls this directly

Calls 15

uae_set_thread_priorityFunction · 0.85
getps2devstructFunction · 0.85
storerequestFunction · 0.85
uae_ReplyMsgFunction · 0.85
rem_async_packetFunction · 0.85
ethernet_triggerFunction · 0.85
write_logFunction · 0.70
getdevnameFunction · 0.70
get_async_requestFunction · 0.70

Tested by

no test coverage detected