summaryrefslogtreecommitdiffstats
path: root/src/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/shared/platform/linux-sgx/sgx_wamr.edl
blob: 7cb4817fda1e40b0a0770694b4fa5f0d4d530126 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
/*
 * Copyright (C) 2019 Intel Corporation.  All rights reserved.
 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 */

enclave {
    include "stdint.h"
    include "stdbool.h"
    include "unistd.h"

    untrusted {
        int ocall_open([in, string]const char *pathname, int flags,
                       bool has_mode, unsigned mode);
        int ocall_openat(int dirfd,
                         [in, string]const char *pathname, int flags,
                         bool has_mode, unsigned mode);
        int ocall_close(int fd);
        ssize_t ocall_read(int fd, [out, size=read_size]void *buf,
                           size_t read_size);
        off_t ocall_lseek(int fd, off_t offset, int whence);
        int ocall_ftruncate(int fd, off_t length);
        int ocall_fsync(int fd);
        int ocall_fdatasync(int fd);
        int ocall_isatty(int fd);
        void ocall_fdopendir(int fd, [out]void **p_dirp);
        /* implementation related to multiple thread */
        void *ocall_readdir([user_check]void *dirp);
        void ocall_rewinddir([user_check]void *dirp);
        void ocall_seekdir([user_check]void *dirp, long loc);
        long ocall_telldir([user_check]void *dirp);
        int ocall_closedir([user_check]void *dirp);

        int ocall_stat([in, string]const char *pathname,
                       [out, size=buf_len]void *buf,
                       unsigned int buf_len);
        int ocall_fstat(int fd, [out, size=buf_len]void *buf,
                        unsigned int buf_len);
        int ocall_fstatat(int dirfd, [in, string]const char *pathname,
                          [out, size=buf_len]void *buf,
                          unsigned int buf_len, int flags);

        int ocall_mkdirat(int dirfd, [in, string]const char *pathname,
                          unsigned mode);
        int ocall_link([in, string] const char *oldpath,
                       [in, string] const char *newpath);
        int ocall_linkat(int olddirfd, [in, string]const char *oldpath,
                         int newdirfd, [in, string]const char *newpath,
                         int flags);
        int ocall_unlinkat(int dirfd, [in, string]const char *pathname,
                           int flags);
        ssize_t ocall_readlink([in, string]const char *pathname,
                               [out, size=bufsiz]char *buf,
                               size_t bufsiz);
        ssize_t ocall_readlinkat(int dirfd,
                                 [in, string]const char *pathname,
                                 [out, size=bufsiz]char *buf,
                                 size_t bufsiz);
        int ocall_renameat(int olddirfd,
                           [in, string]const char *oldpath,
                           int newdirfd,
                           [in, string]const char *newpath);
        int ocall_symlinkat([in ,string]const char *target,
                            int newdirfd,
                            [in, string]const char *linkpath);

        int ocall_ioctl(int fd, unsigned long request,
                        [out, size=arg_len]void *arg,
                        unsigned int arg_len);
        int ocall_fcntl(int fd, int cmd);
        int ocall_fcntl_long(int fd, int cmd, long arg);

        int ocall_realpath([in, string]const char *path,
                           [out, size=buf_len]char *buf,
                           unsigned int buf_len);
        int ocall_posix_fallocate(int fd, off_t offset, off_t len);
        int ocall_poll([in, out, size=fds_len]void *fds, unsigned nfds,
                       int timeout, unsigned int fds_len);

        int ocall_getopt(int argc,
                         [in, size=argv_buf_len]char *argv_buf,
                         unsigned int argv_buf_len,
                         [in, string]const char *optstring);
        ssize_t ocall_readv(int fd,
                            [in, out, size=buf_size]char *iov_buf,
                            unsigned int buf_size, int iovcnt,
                            bool has_offset, off_t offset);
        ssize_t ocall_writev(int fd,
                             [in, size=buf_size]char *iov_buf,
                             unsigned int buf_size, int iovcnt,
                             bool has_offset, off_t offset);

        /* time clock */
        int ocall_clock_gettime(unsigned clock_id,
                                [out, size=tp_buf_size]void *tp_buf,
                                unsigned int tp_buf_size);
        int ocall_clock_getres(int clock_id,
                               [out, size=res_buf_size]void *res_buf,
                               unsigned int res_buf_size);
        int ocall_utimensat(int dirfd, [in, string]const char *pathname,
                            [in, size=times_buf_size]const void *times_buf,
                            unsigned int times_buf_size, int flags);
        int ocall_futimens(int fd, [in, size=times_buf_size]const void *times_buf,
                           unsigned int times_buf_size);
        int ocall_clock_nanosleep(unsigned clock_id, int flags,
                                  [in, size=req_buf_size]const void *req_buf,
                                  unsigned int req_buf_size,
                                  [out, size=rem_buf_size]void *rem_buf,
                                  unsigned int rem_buf_size);

        int ocall_raise(int sig);

        int ocall_sched_yield();

        int ocall_pthread_rwlock_init([out]void **rwlock, [user_check]void *attr);
        int ocall_pthread_rwlock_destroy([user_check]void *rwlock);
        int ocall_pthread_rwlock_rdlock([user_check]void *rwlock);
        int ocall_pthread_rwlock_wrlock([user_check]void *rwlock);
        int ocall_pthread_rwlock_unlock([user_check]void *rwlock);

        int ocall_get_errno();

        /* sockets */
        int ocall_accept(int sockfd, [in, size=addr_size]void *addr,
                  [in, size=4] uint32_t *addrlen, uint32_t addr_size);
        int ocall_bind(int sockfd, [in, size=addrlen]const void *addr,
                 uint32_t addrlen);
        int ocall_connect(int sockfd, [in, size=addrlen]void *addr, uint32_t addrlen);
        int ocall_getsockname(int sockfd, [out, size=addr_size]void *addr,
                              [in, out, size=4]uint32_t *addrlen, uint32_t addr_size);
        int ocall_getpeername(int sockfd, [out, size=addr_size]void *addr,
                              [in, out, size=4]uint32_t *addrlen, uint32_t addr_size);
        int ocall_getsockopt(int sockfd, int level, int optname,
                             [out, size=val_buf_size]void *val_buf,
                             unsigned int val_buf_size,
                             [in, out, size=4]void *len_buf);
        int ocall_listen(int sockfd, int backlog);
        int ocall_recv(int sockfd, [out, size=len]void *buf, size_t len, int flags);
        ssize_t ocall_recvfrom(int sockfd, [out, size=len]void *buf, size_t len, int flags,
                               [out, size=addr_size]void *src_addr,
                               [in, out, size=4]uint32_t *addrlen, uint32_t addr_size);
        ssize_t ocall_recvmsg(int sockfd,
                              [in, out, size=msg_buf_size]void *msg_buf,
                              unsigned int msg_buf_size,
                              int flags);
        int ocall_send(int sockfd, [in, size=len]const void *buf, size_t len, int flags);
        ssize_t ocall_sendto(int sockfd, [in, size=len]const void *buf, size_t len, int flags,
                             [in, size=addrlen]void *dest_addr, uint32_t addrlen);
        ssize_t ocall_sendmsg(int sockfd,
                              [in, size=msg_buf_size]void *msg_buf,
                              unsigned int msg_buf_size,
                              int flags);
        int ocall_setsockopt(int sockfd, int level, int optname,
                             [in, size=optlen]void *optval,
                             unsigned int optlen);
        int ocall_shutdown(int sockfd, int how);
        int ocall_socket(int domain, int type, int protocol);
    };
};