OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [include/] [l4/] [api/] [ipc.h] - Blame information for rev 6

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
#ifndef __IPC_H__
2
#define __IPC_H__
3
 
4
#define L4_NILTHREAD            0xFFFFFFFF
5
#define L4_ANYTHREAD            0xFFFFFFFE
6
 
7
#define L4_IPC_TAG_MR_OFFSET            0
8
 
9
/* Pagefault */
10
#define L4_IPC_TAG_PFAULT               0
11
#define L4_IPC_TAG_UNDEF_FAULT          1
12
 
13
#define L4_IPC_FLAGS_TYPE_MASK          0x0000000F
14
#define L4_IPC_FLAGS_SHORT              0x00000000      /* Short IPC involves just primary message registers */
15
#define L4_IPC_FLAGS_FULL               0x00000001      /* Full IPC involves full UTCB copy */
16
#define L4_IPC_FLAGS_EXTENDED           0x00000002      /* Extended IPC can page-fault and copy up to 2KB */
17
 
18
/* Extended IPC extra fields */
19
#define L4_IPC_FLAGS_MSG_INDEX_MASK     0x00000FF0      /* Index of message register with buffer pointer */
20
#define L4_IPC_FLAGS_SIZE_MASK          0x0FFF0000
21
#define L4_IPC_FLAGS_SIZE_SHIFT         16
22
#define L4_IPC_FLAGS_MSG_INDEX_SHIFT    4
23
 
24
 
25
#define L4_IPC_EXTENDED_MAX_SIZE        (SZ_1K*2)
26
 
27
#if defined (__KERNEL__)
28
 
29
/* Kernel-only flags */
30
#define IPC_FLAGS_SHORT                 L4_IPC_FLAGS_SHORT
31
#define IPC_FLAGS_FULL                  L4_IPC_FLAGS_FULL
32
#define IPC_FLAGS_EXTENDED              L4_IPC_FLAGS_EXTENDED
33
#define IPC_FLAGS_MSG_INDEX_MASK        L4_IPC_FLAGS_MSG_INDEX_MASK
34
#define IPC_FLAGS_TYPE_MASK             L4_IPC_FLAGS_TYPE_MASK
35
#define IPC_FLAGS_SIZE_MASK             L4_IPC_FLAGS_SIZE_MASK
36
#define IPC_FLAGS_SIZE_SHIFT            L4_IPC_FLAGS_SIZE_SHIFT
37
#define IPC_FLAGS_MSG_INDEX_SHIFT       L4_IPC_FLAGS_MSG_INDEX_SHIFT
38
#define IPC_FLAGS_ERROR_MASK            0xF0000000
39
#define IPC_FLAGS_ERROR_SHIFT           28
40
#define IPC_EFAULT                      (1 << 28)
41
#define IPC_ENOIPC                      (1 << 29)
42
 
43
#define IPC_EXTENDED_MAX_SIZE           L4_IPC_EXTENDED_MAX_SIZE
44
 
45
/*
46
 * ipc syscall uses an ipc_dir variable and send/recv
47
 * details are embedded in this variable.
48
 */
49
enum IPC_DIR {
50
        IPC_INVALID = 0,
51
        IPC_SEND = 1,
52
        IPC_RECV = 2,
53
        IPC_SENDRECV = 3,
54
};
55
 
56
/* These are for internally created ipc paths. */
57
int ipc_send(l4id_t to, unsigned int flags);
58
int ipc_sendrecv(l4id_t to, l4id_t from, unsigned int flags);
59
 
60
#endif
61
 
62
#endif /* __IPC_H__ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.