seL4/include/object/endpoint.h
Qian Ge 512a0200de replacing all ifndef with pargma once
All the kernel header files now use pargma once rather than the ifndef,
as the pre-processed C files do not change while header files
are protected with pargma once. This will also solve any naming issues
caused by ifndef.
2020-03-23 11:04:46 +11:00

39 lines
1.2 KiB
C

/*
* Copyright 2014, General Dynamics C4 Systems
*
* SPDX-License-Identifier: GPL-2.0-only
*/
#pragma once
#include <types.h>
#include <object/structures.h>
static inline tcb_queue_t PURE ep_ptr_get_queue(endpoint_t *epptr)
{
tcb_queue_t queue;
queue.head = (tcb_t *)endpoint_ptr_get_epQueue_head(epptr);
queue.end = (tcb_t *)endpoint_ptr_get_epQueue_tail(epptr);
return queue;
}
#ifdef CONFIG_KERNEL_MCS
void sendIPC(bool_t blocking, bool_t do_call, word_t badge,
bool_t canGrant, bool_t canGrantReply, bool_t canDonate, tcb_t *thread,
endpoint_t *epptr);
void receiveIPC(tcb_t *thread, cap_t cap, bool_t isBlocking, cap_t replyCPtr);
void reorderEP(endpoint_t *epptr, tcb_t *thread);
#else
void sendIPC(bool_t blocking, bool_t do_call, word_t badge,
bool_t canGrant, bool_t canGrantReply, tcb_t *thread,
endpoint_t *epptr);
void receiveIPC(tcb_t *thread, cap_t cap, bool_t isBlocking);
#endif
void cancelIPC(tcb_t *tptr);
void cancelAllIPC(endpoint_t *epptr);
void cancelBadgedSends(endpoint_t *epptr, word_t badge);
void replyFromKernel_error(tcb_t *thread);
void replyFromKernel_success_empty(tcb_t *thread);