kernel/inc/proc/pipe.h

31 lines
953 B
C

// This file is part of noxos and licensed under the MIT open source license
#ifndef NOXOS_PIPE_H
#define NOXOS_PIPE_H
#ifndef NOX_PROCESS
typedef struct process_T process_T;
#endif
#include "utils/stream.h"
#include "utils/bitmap.h"
#define PIPE_MAX_SENDERS 8
#define PIPE_STD_STREAM_SIZE 0x1000
typedef struct {
stream_T* stream;
process_T* receiver;
process_T* senders [PIPE_MAX_SENDERS];
bitmap_T senders_bitmap;
void (*on_write)();
} pipe_T;
void pipe_init (pipe_T* pipe, process_T* receiver, void (*on_write)());
void pipe_destruct (pipe_T* pipe);
bool pipe_add_sender (pipe_T* pipe, process_T* sender);
void pipe_remove_sender (pipe_T* pipe, process_T* sender);
uint64_t pipe_write (pipe_T* pipe, void* buffer_in, uint64_t n);
uint64_t pipe_read (pipe_T* pipe, void* buffer_out, uint64_t n);
#endif //NOXOS_PIPE_H