Sha256: 765171785abe8d937868138e16aef7b5323b5818dfc8bd7ff22d7c731dda5a3f

Contents?: true

Size: 1.21 KB

Versions: 15

Compression:

Stored size: 1.21 KB

Contents

#ifndef BACKEND_IO_URING_CONTEXT_H
#define BACKEND_IO_URING_CONTEXT_H

#include "ruby.h"

enum op_type {
  OP_NONE,
  OP_READ,
  OP_WRITEV,
  OP_WRITE,
  OP_RECV,
  OP_SEND,
  OP_TIMEOUT,
  OP_POLL,
  OP_ACCEPT,
  OP_CONNECT
};

typedef struct op_context {
  struct op_context *prev;
  struct op_context *next;
  enum op_type      type: 16;
  int               completed : 16;
  int               id;
  int               result;
  VALUE             fiber;
  VALUE             resume_value;
} op_context_t;

typedef struct op_context_store {
  int           last_id;
  op_context_t *available;
  op_context_t *taken;
} op_context_store_t;

const char *op_type_to_str(enum op_type type);

void context_store_initialize(op_context_store_t *store);
op_context_t *context_store_acquire(op_context_store_t *store, enum op_type type);
void context_store_release(op_context_store_t *store, op_context_t *ctx);
void context_store_free(op_context_store_t *store);

#define OP_CONTEXT_ACQUIRE(store, op_type) context_store_acquire(store, op_type)
#define OP_CONTEXT_RELEASE(store, ctx) { \
  if (ctx->completed) {\
    context_store_release(store, ctx); \
  } \
  else { \
    ctx->completed = 1; \
  } \
}

#endif /* BACKEND_IO_URING_CONTEXT_H */

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
polyphony-0.52.0 ext/polyphony/backend_io_uring_context.h
polyphony-0.51.0 ext/polyphony/backend_io_uring_context.h
polyphony-0.50.1 ext/polyphony/backend_io_uring_context.h
polyphony-0.50.0 ext/polyphony/backend_io_uring_context.h
polyphony-0.49.2 ext/polyphony/backend_io_uring_context.h
polyphony-0.49.1 ext/polyphony/backend_io_uring_context.h
polyphony-0.49.0 ext/polyphony/backend_io_uring_context.h
polyphony-0.48.0 ext/polyphony/backend_io_uring_context.h
polyphony-0.47.5.1 ext/polyphony/backend_io_uring_context.h
polyphony-0.47.5 ext/polyphony/backend_io_uring_context.h
polyphony-0.47.4 ext/polyphony/backend_io_uring_context.h
polyphony-0.47.3 ext/polyphony/backend_io_uring_context.h
polyphony-0.47.2 ext/polyphony/backend_io_uring_context.h
polyphony-0.47.1 ext/polyphony/backend_io_uring_context.h
polyphony-0.47.0 ext/polyphony/backend_io_uring_context.h