Ignore:
Timestamp:
Apr 10, 2020, 11:20:31 AM (4 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
7df014f
Parents:
72828a8
Message:

Implemented basic io_uring setup and poller

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/kernel.hfa

    r72828a8 r92976d9  
    1717
    1818#include <stdbool.h>
     19#include <stdint.h>
    1920
    2021#include "invoke.h"
     
    111112
    112113//-----------------------------------------------------------------------------
     114// I/O
     115#if defined(HAVE_LINUX_IO_URING_H)
     116struct io_uring_sq {
     117        uint32_t * head;
     118        uint32_t * tail;
     119        uint32_t * mask;
     120        uint32_t * entries;
     121        uint32_t * flags;
     122        uint32_t * dropped;
     123        uint32_t * array;
     124        struct io_uring_sqe * sqes;
     125
     126        uint32_t sqe_head;
     127        uint32_t sqe_tail;
     128
     129        size_t ring_sz;
     130        void * ring_ptr;
     131};
     132
     133struct io_uring_cq {
     134        volatile uint32_t * head;
     135        volatile uint32_t * tail;
     136        uint32_t * mask;
     137        struct io_uring_cqe * entries;
     138        uint32_t * overflow;
     139        struct io_uring_cqe * cqes;
     140
     141        size_t ring_sz;
     142        void * ring_ptr;
     143};
     144
     145struct io_ring {
     146        struct io_uring_sq submit_q;
     147        struct io_uring_cq completion_q;
     148        uint32_t flags;
     149        int fd;
     150        pthread_t poller;
     151        void * stack;
     152        volatile bool done;
     153};
     154#endif
     155
     156//-----------------------------------------------------------------------------
    113157// Cluster
    114158struct cluster {
     
    141185                cluster * prev;
    142186        } node;
     187
     188        #if defined(HAVE_LINUX_IO_URING_H)
     189                struct io_ring io;
     190        #endif
    143191};
    144192extern Duration default_preemption();
Note: See TracChangeset for help on using the changeset viewer.