syscalls.master revision 1.44 1 $NetBSD: syscalls.master,v 1.44 2008/12/12 23:36:18 njoly Exp $
2
3 ; NetBSD i386 COMPAT_LINUX32 system call name/number "master" file.
4 ; (See syscalls.conf to see what it is processed into.)
5 ;
6 ; Fields: number type [type-dependent ...]
7 ; number system call number, must be in order
8 ; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of
9 ; the compatibility options defined in syscalls.conf.
10 ;
11 ; types:
12 ; STD always included
13 ; OBSOL obsolete, not included in system
14 ; UNIMPL unimplemented, not included in system
15 ; NODEF included, but don't define the syscall number
16 ;
17 ; INDIR included, but don't define the syscall args structure
18 ; and allow it to be "really" varargs.
19 ;
20 ; The compat options are defined in the syscalls.conf file, and the
21 ; compat option name is prefixed to the syscall name. Other than
22 ; that, they're like NODEF (for 'compat' options), or STD (for
23 ; 'libcompat' options).
24 ;
25 ; The type-dependent arguments are as follows:
26 ; For STD, NODEF, NOARGS, and compat syscalls:
27 ; { pseudo-proto } [alias]
28 ; For other syscalls:
29 ; [comment]
30 ;
31 ; #ifdef's, etc. may be included, and are copied to the output files.
32 ; #include's are copied to the syscall names and switch definition files only.
33
34 #include <sys/param.h>
35 #include <sys/poll.h>
36 #include <sys/systm.h>
37 #include <sys/signal.h>
38 #include <sys/mount.h>
39 #include <sys/syscallargs.h>
40
41 #include <machine/netbsd32_machdep.h>
42
43 #include <compat/netbsd32/netbsd32.h>
44 #include <compat/netbsd32/netbsd32_syscallargs.h>
45
46 #include <compat/linux32/common/linux32_types.h>
47 #include <compat/linux32/common/linux32_signal.h>
48 #include <compat/linux32/arch/amd64/linux32_missing.h>
49 #include <compat/linux32/linux32_syscallargs.h>
50
51 #include <compat/linux/common/linux_types.h>
52 #include <compat/linux/common/linux_mmap.h>
53 #include <compat/linux/common/linux_signal.h>
54 #include <compat/linux/common/linux_siginfo.h>
55 #include <compat/linux/common/linux_machdep.h>
56 #include <compat/linux/common/linux_ipc.h>
57 #include <compat/linux/common/linux_sem.h>
58 #include <compat/linux/linux_syscallargs.h>
59
60 %%
61
62 0 NOARGS { int linux_sys_nosys(void); } syscall
63 1 NOARGS { int netbsd32_exit(int rval); }
64 2 NOARGS { int sys_fork(void); }
65 3 NOARGS { netbsd32_ssize_t netbsd32_read(int fd, \
66 netbsd32_voidp buf, netbsd32_size_t nbyte); }
67 4 NOARGS { netbsd32_ssize_t netbsd32_write(int fd, \
68 netbsd32_voidp buf, netbsd32_size_t nbyte); }
69 5 STD { int linux32_sys_open(netbsd32_charp path, int flags, \
70 int mode); }
71 6 NOARGS { int netbsd32_close(int fd); }
72 7 STD { int linux32_sys_waitpid(int pid, netbsd32_intp status, \
73 int options);}
74 8 STD { int linux32_sys_creat(netbsd32_charp path, int mode); }
75 9 NOARGS { int netbsd32_link(netbsd32_charp path, \
76 netbsd32_charp link); }
77 10 STD { int linux32_sys_unlink(netbsd32_charp path); }
78 11 NOARGS { int netbsd32_execve(netbsd32_charp path, \
79 netbsd32_charpp argp, netbsd32_charpp envp); }
80 12 NOARGS { int netbsd32_chdir(netbsd32_charp path); }
81 13 STD { int linux32_sys_time(linux32_timep_t t); }
82 14 STD { int linux32_sys_mknod(netbsd32_charp path, \
83 int mode, int dev); }
84 15 NOARGS { int netbsd32_chmod(netbsd32_charp path, int mode); }
85 16 STD { int linux32_sys_lchown16(netbsd32_charp path, \
86 linux32_uid16_t uid, linux32_gid16_t gid); }
87 17 STD { int linux32_sys_break(netbsd32_charp nsize); }
88 18 OBSOL ostat
89 19 NOARGS { netbsd32_long compat_43_netbsd32_olseek(int fd, \
90 netbsd32_long offset, int chence); }
91 20 STD { pid_t linux_sys_getpid(void); }
92 21 UNIMPL mount
93 22 UNIMPL umount
94 23 NOARGS linux_setuid16 { int netbsd32_setuid(uid_t uid); }
95 24 NOARGS linux_getuid16 { uid_t sys_getuid(void); }
96 25 STD { int linux32_sys_stime(linux32_timep_t t); }
97 26 STD { int linux32_sys_ptrace(int request, int pid, \
98 int addr, int data); }
99 27 STD { int linux32_sys_alarm(unsigned int secs); }
100 28 OBSOL ofstat
101 29 NOARGS { int linux_sys_pause(void); }
102 30 STD { int linux32_sys_utime(netbsd32_charp path, \
103 linux32_utimbufp_t times); }
104 31 OBSOL stty
105 32 OBSOL gtty
106 33 NOARGS { int netbsd32_access(netbsd32_charp path, \
107 int flags); }
108 34 STD { int linux32_sys_nice(int incr); }
109 35 OBSOL ftime
110 36 NOARGS { int sys_sync(void); }
111 37 STD { int linux32_sys_kill(int pid, int signum); }
112 38 NOARGS { int netbsd32___posix_rename(netbsd32_charp from, \
113 netbsd32_charp to); }
114 39 NOARGS { int netbsd32_mkdir(netbsd32_charp path, int mode); }
115 40 NOARGS { int netbsd32_rmdir(netbsd32_charp path); }
116 41 NOARGS { int netbsd32_dup(u_int fd); }
117 42 STD { int linux32_sys_pipe(netbsd32_intp fd); }
118 43 STD { int linux32_sys_times(linux32_tmsp_t tms); }
119 44 OBSOL prof
120 45 STD { int linux32_sys_brk(netbsd32_charp nsize); }
121 46 NOARGS linux_setgid16 { int netbsd32_setgid(gid_t gid); }
122 47 NOARGS linux_getgid16 { gid_t sys_getgid(void); }
123 48 STD { int linux32_sys_signal(int signum, \
124 linux32_handler_t handler); }
125 49 NOARGS linux_geteuid16 { uid_t sys_geteuid(void); }
126 50 NOARGS linux_getegid16 { gid_t sys_getegid(void); }
127 51 NOARGS { int netbsd32_acct(netbsd32_charp path); }
128 52 OBSOL phys
129 53 OBSOL lock
130 54 STD { int linux32_sys_ioctl(int fd, netbsd32_u_long com, \
131 netbsd32_charp data); }
132 55 STD { int linux32_sys_fcntl(int fd, \
133 int cmd, netbsd32_voidp arg); }
134 56 OBSOL mpx
135 57 NOARGS { int netbsd32_setpgid(int pid, int pgid); }
136 58 OBSOL ulimit
137 59 STD { int linux32_sys_oldolduname( \
138 linux32_oldold_utsnamep_t up); }
139 60 NOARGS { int netbsd32_umask(int newmask); }
140 61 NOARGS { int netbsd32_chroot(netbsd32_charp path); }
141 62 UNIMPL ustat
142 63 NOARGS { int netbsd32_dup2(int from, int to); }
143 64 STD { pid_t linux_sys_getppid(void); }
144 65 NOARGS { int sys_getpgrp(void); }
145 66 NOARGS { int sys_setsid(void); }
146 67 UNIMPL sigaction
147 68 UNIMPL siggetmask
148 69 UNIMPL sigsetmask
149 70 STD { int linux32_sys_setreuid16(linux32_uid16_t ruid, \
150 linux32_uid16_t euid); }
151 71 STD { int linux32_sys_setregid16(linux32_gid16_t rgid, \
152 linux32_gid16_t egid); }
153 72 UNIMPL sigsuspend
154 73 UNIMPL sigpending
155 74 NOARGS { int compat_43_netbsd32_osethostname(netbsd32_charp hostname, \
156 u_int len); }
157 75 STD { int linux32_sys_setrlimit(u_int which, \
158 netbsd32_orlimitp_t rlp); }
159 76 STD { int linux32_sys_getrlimit(u_int which, \
160 netbsd32_orlimitp_t rlp); }
161 77 NOARGS { int netbsd32_getrusage(int who, \
162 netbsd32_rusagep_t rusage); }
163 78 STD { int linux32_sys_gettimeofday(netbsd32_timevalp_t tp, \
164 netbsd32_timezonep_t tzp); }
165 79 STD { int linux32_sys_settimeofday(netbsd32_timevalp_t tp, \
166 netbsd32_timezonep_t tzp); }
167 80 STD { int linux32_sys_getgroups16(int gidsetsize, \
168 linux32_gid16p_t gidset); }
169 81 STD { int linux32_sys_setgroups16(int gidsetsize, \
170 linux32_gid16p_t gidset); }
171 82 STD { int linux32_sys_oldselect(linux32_oldselectp_t lsp); }
172 83 NOARGS { int netbsd32_symlink(netbsd32_charp path, \
173 netbsd32_charp link); }
174 84 NOARGS { int compat_43_netbsd32_lstat43(netbsd32_charp \
175 path, netbsd32_stat43p_t ub); }
176 85 NOARGS { int netbsd32_readlink(netbsd32_charp name, \
177 netbsd32_charp buf, netbsd32_size_t count); }
178 86 UNIMPL uselib
179 87 STD { int linux32_sys_swapon(netbsd32_charp name); }
180 88 STD { int linux32_sys_reboot(int magic1, int magic2, int cmd, \
181 netbsd32_voidp arg); }
182 89 STD { int linux32_sys_readdir(int fd, netbsd32_voidp dent, \
183 unsigned int count); }
184 90 STD { int linux32_sys_old_mmap(linux32_oldmmapp lmp); }
185 91 NOARGS { int netbsd32_munmap(netbsd32_voidp addr, \
186 netbsd32_size_t len); }
187 92 NOARGS { int compat_43_netbsd32_otruncate(netbsd32_charp path, \
188 netbsd32_long length); }
189 93 NOARGS { int compat_43_netbsd32_oftruncate(int fd, \
190 netbsd32_long length); }
191 94 NOARGS { int netbsd32_fchmod(int fd, int mode); }
192 95 STD { int linux32_sys_fchown16(int fd, linux32_uid16_t uid, \
193 linux32_gid16_t gid); }
194 96 STD { int linux32_sys_getpriority(int which, int who); }
195 97 NOARGS { int netbsd32_setpriority(int which, int who, int prio); }
196 98 UNIMPL profil
197 99 STD { int linux32_sys_statfs(netbsd32_charp path, \
198 linux32_statfsp sp); }
199 100 UNIMPL fstatfs
200 101 UNIMPL ioperm
201 102 STD { int linux32_sys_socketcall(int what, netbsd32_voidp args); }
202 103 UNIMPL syslog
203 104 NOARGS { int netbsd32_setitimer(int which, \
204 netbsd32_itimervalp_t itv, netbsd32_itimervalp_t oitv); }
205 105 NOARGS { int netbsd32_getitimer(int which, \
206 netbsd32_itimervalp_t itv); }
207 106 UNIMPL stat
208 107 UNIMPL lstat
209 108 UNIMPL fstat
210 109 STD { int linux32_sys_olduname(linux32_oldutsnamep_t up); }
211 110 UNIMPL iopl
212 111 UNIMPL vhangup
213 112 UNIMPL idle
214 113 UNIMPL vm86old
215 114 STD { int linux32_sys_wait4(int pid, netbsd32_intp status, \
216 int options, netbsd32_rusagep_t rusage); }
217 115 STD { int linux32_sys_swapoff(netbsd32_charp path); }
218 116 STD { int linux32_sys_sysinfo(linux32_sysinfop_t arg); }
219 117 STD { int linux32_sys_ipc(int what, int a1, int a2, int a3, \
220 netbsd32_voidp ptr); }
221 118 NOARGS { int netbsd32_fsync(int fd); }
222 119 STD { int linux32_sys_sigreturn(linux32_sigcontextp_t scp); }
223 120 STD { int linux32_sys_clone(int flags, netbsd32_voidp stack); }
224 121 UNIMPL setdomainname
225 122 STD { int linux32_sys_uname(linux32_utsnamep up); }
226 123 UNIMPL modify_ldt
227 124 UNIMPL adjtimex
228 125 STD { int linux32_sys_mprotect(netbsd32_voidp start, \
229 netbsd32_size_t len, int prot); }
230 126 UNIMPL sigprocmask
231 127 UNIMPL create_module
232 128 UNIMPL init_module
233 129 UNIMPL delete_module
234 130 UNIMPL get_kernel_syms
235 131 UNIMPL quotactl
236 132 NOARGS { int netbsd32_getpgid(pid_t pid); }
237 133 NOARGS { int netbsd32_fchdir(int fd); }
238 134 UNIMPL bdflush
239 135 UNIMPL sysfs
240 136 UNIMPL personality
241 137 UNIMPL afs_syscall
242 138 NOARGS setfsuid16 { int linux32_sys_setfsuid(uid_t uid); }
243 139 NOARGS setfsgid16 { int linux32_sys_setfsgid(gid_t gid); }
244 140 STD { int linux32_sys_llseek(int fd, u_int32_t ohigh, \
245 u_int32_t olow, netbsd32_voidp res, int whence); }
246 141 STD { int linux32_sys_getdents(int fd, \
247 linux32_direntp_t dent, unsigned int count); }
248 142 STD { int linux32_sys_select(int nfds, \
249 netbsd32_fd_setp_t readfds, \
250 netbsd32_fd_setp_t writefds, \
251 netbsd32_fd_setp_t exceptfds, \
252 netbsd32_timevalp_t timeout); }
253 143 NOARGS { int netbsd32_flock(int fd, int how); }
254 144 NOARGS { int netbsd32___msync13(netbsd32_voidp addr, \
255 netbsd32_size_t len, int flags); }
256 145 NOARGS { int netbsd32_readv(int fd, \
257 netbsd32_iovecp_t iovp, int iovcnt); }
258 146 NOARGS { netbsd32_ssize_t netbsd32_writev(int fd, \
259 netbsd32_iovecp_t iovp, int iovcnt); }
260 147 NOARGS { pid_t netbsd32_getsid(pid_t pid); }
261 148 STD { int linux32_sys_fdatasync(int fd); }
262 149 STD { int linux32_sys___sysctl(linux32___sysctlp_t lsp); }
263 150 NOARGS { int netbsd32_mlock(netbsd32_voidp addr, \
264 netbsd32_size_t len); }
265 151 NOARGS { int netbsd32_munlock(netbsd32_voidp addr, \
266 netbsd32_size_t len); }
267 152 NOARGS { int netbsd32_mlockall(int flags); }
268 153 NOARGS { int sys_munlockall(void); }
269 154 UNIMPL sched_setparam
270 155 STD { int linux32_sys_sched_getparam(pid_t pid, \
271 linux32_sched_paramp_t sp); }
272 156 STD { int linux32_sys_sched_setscheduler(pid_t pid, \
273 int policy, linux32_sched_paramp_t sp); }
274 157 STD { int linux32_sys_sched_getscheduler(pid_t pid); }
275 158 NOARGS { int linux_sys_sched_yield(void); }
276 159 STD { int linux32_sys_sched_get_priority_max(int policy); }
277 160 STD { int linux32_sys_sched_get_priority_min(int policy); }
278 161 UNIMPL sched_rr_get_interval
279 162 STD { int linux32_sys_nanosleep(linux32_timespecp_t rqtp, \
280 linux32_timespecp_t rmtp); }
281 163 STD { int linux32_sys_mremap(netbsd32_voidp old_address, \
282 netbsd32_size_t old_size, netbsd32_size_t new_size, \
283 netbsd32_u_long flags); }
284 164 STD { int linux32_sys_setresuid16(linux32_uid16_t ruid, \
285 linux32_uid16_t euid, linux32_uid16_t suid); }
286 165 STD { int linux32_sys_getresuid16(linux32_uid16p_t ruid, \
287 linux32_uid16p_t euid, linux32_uid16p_t suid); }
288 166 UNIMPL vm86
289 167 UNIMPL query_module
290 168 NOARGS { int netbsd32_poll(netbsd32_pollfdp_t fds, u_int nfds, \
291 int timeout); }
292 169 UNIMPL nfsservctl
293 170 STD { int linux32_sys_setresgid16(linux32_gid16_t rgid, \
294 linux32_gid16_t egid, linux32_gid16_t sgid); }
295 171 STD { int linux32_sys_getresgid16(linux32_gid16p_t rgid, \
296 linux32_gid16p_t egid, linux32_gid16p_t sgid); }
297 172 UNIMPL prctl
298 173 STD { int linux32_sys_rt_sigreturn(linux32_ucontextp_t ucp); }
299 174 STD { int linux32_sys_rt_sigaction(int signum, \
300 linux32_sigactionp_t nsa, \
301 linux32_sigactionp_t osa, \
302 netbsd32_size_t sigsetsize); }
303 175 STD { int linux32_sys_rt_sigprocmask(int how, \
304 linux32_sigsetp_t set, \
305 linux32_sigsetp_t oset, \
306 netbsd32_size_t sigsetsize); }
307 176 STD { int linux32_sys_rt_sigpending(linux32_sigsetp_t set, \
308 netbsd32_size_t sigsetsize); }
309 177 UNIMPL rt_sigtimedwait
310 178 UNIMPL rt_queueinfo
311 179 STD { int linux32_sys_rt_sigsuspend(linux32_sigsetp_t unewset, \
312 netbsd32_size_t sigsetsize); }
313 180 STD { netbsd32_ssize_t linux32_sys_pread(int fd, \
314 netbsd32_voidp buf, netbsd32_size_t nbyte, \
315 linux32_off_t offset); }
316 181 STD { netbsd32_ssize_t linux32_sys_pwrite(int fd, \
317 netbsd32_voidp buf, netbsd32_size_t nbyte, \
318 linux32_off_t offset); }
319 182 STD { int linux32_sys_chown16(netbsd32_charp path, \
320 linux32_uid16_t uid, linux32_gid16_t gid); }
321 183 NOARGS { int netbsd32___getcwd(netbsd32_charp bufp, \
322 netbsd32_size_t length); }
323 184 UNIMPL capget
324 185 UNIMPL capset
325 186 UNIMPL sigaltstack
326 187 UNIMPL sendfile
327 188 UNIMPL getpmsg
328 189 UNIMPL putpmsg
329 190 NOARGS { int sys___vfork14(void); }
330 191 STD { int linux32_sys_ugetrlimit(int which, \
331 netbsd32_orlimitp_t rlp); }
332 192 STD { linux32_off_t linux32_sys_mmap2(netbsd32_u_long addr, \
333 netbsd32_size_t len, int prot, int flags, int fd, \
334 linux32_off_t offset); }
335 193 UNIMPL truncate64
336 194 UNIMPL ftruncate64
337 195 STD { int linux32_sys_stat64(netbsd32_charp path, \
338 linux32_stat64p sp); }
339 196 STD { int linux32_sys_lstat64(netbsd32_charp path, \
340 linux32_stat64p sp); }
341 197 STD { int linux32_sys_fstat64(int fd, \
342 linux32_stat64p sp); }
343 198 NOARGS { int netbsd32___posix_lchown(netbsd32_charp path, \
344 uid_t uid, gid_t gid); }
345 199 NOARGS { uid_t sys_getuid(void); }
346 200 NOARGS { gid_t sys_getgid(void); }
347 201 NOARGS { uid_t sys_geteuid(void); }
348 202 NOARGS { gid_t sys_getegid(void); }
349 203 NOARGS { int netbsd32_setreuid(uid_t ruid, uid_t euid); }
350 204 NOARGS { int netbsd32_setregid(gid_t rgid, gid_t egid); }
351 205 NOARGS { int netbsd32_getgroups(int gidsetsize, \
352 netbsd32_gid_tp gidset); }
353 206 NOARGS { int netbsd32_setgroups(int gidsetsize, \
354 netbsd32_gid_tp gidset); }
355 207 NOARGS { int netbsd32___posix_fchown(int fd, uid_t uid, gid_t gid); }
356 208 STD { int linux32_sys_setresuid(uid_t ruid, uid_t euid, \
357 uid_t suid); }
358 209 STD { int linux32_sys_getresuid(linux32_uidp_t ruid, \
359 linux32_uidp_t euid, linux32_uidp_t suid); }
360 210 STD { int linux32_sys_setresgid(gid_t rgid, gid_t egid, \
361 gid_t sgid); }
362 211 STD { int linux32_sys_getresgid(linux32_gidp_t rgid, \
363 linux32_gidp_t egid, linux32_gidp_t sgid); }
364 212 NOARGS { int netbsd32___posix_chown(netbsd32_charp path, \
365 uid_t uid, gid_t gid); }
366 213 NOARGS { int netbsd32_setuid(uid_t uid); }
367 214 NOARGS { int netbsd32_setgid(gid_t gid); }
368 215 STD { int linux32_sys_setfsuid(uid_t uid); }
369 216 STD { int linux32_sys_setfsgid(gid_t gid); }
370 217 UNIMPL pivot_root
371 218 UNIMPL mincore
372 219 NOARGS { int netbsd32_madvise(netbsd32_voidp addr, \
373 netbsd32_size_t len, int behav); }
374 220 STD { int linux32_sys_getdents64(int fd, \
375 linux32_dirent64p_t dent, unsigned int count); }
376 ; fcntl64() - Exactly the same as fcntl()
377 #define linux32_sys_fcntl64 linux32_sys_fcntl
378 #define linux32_sys_fcntl64_args linux32_sys_fcntl_args
379 221 NOARGS { int linux32_sys_fcntl64(int fd, \
380 int cmd, netbsd32_voidp arg); }
381 222 UNIMPL /* unused */
382 223 UNIMPL /* unused */
383 224 STD { pid_t linux_sys_gettid(void); }
384 225 UNIMPL readahead
385 226 UNIMPL setxattr
386 227 UNIMPL lsetxattr
387 228 UNIMPL fsetxattr
388 229 UNIMPL getxattr
389 230 UNIMPL lgetxattr
390 231 UNIMPL fgetxattr
391 232 UNIMPL listxattr
392 233 UNIMPL llistxattr
393 234 UNIMPL flistxattr
394 235 UNIMPL removexattr
395 236 UNIMPL lremovexattr
396 237 UNIMPL fremovexattr
397 238 UNIMPL tkill
398 239 UNIMPL sendfile64
399 240 UNIMPL futex
400 241 UNIMPL sched_setaffinity
401 242 UNIMPL sched_getaffinity
402 243 UNIMPL set_thread_area
403 244 UNIMPL get_thread_area
404 245 UNIMPL io_setup
405 246 UNIMPL io_destroy
406 247 UNIMPL io_getevents
407 248 UNIMPL io_submit
408 249 UNIMPL io_cancel
409 250 UNIMPL fadvise64
410 251 UNIMPL /* unused */
411 252 STD { int linux32_sys_exit_group(int error_code); }
412 253 UNIMPL lookup_dcookie
413 254 UNIMPL epoll_create
414 255 UNIMPL epoll_ctl
415 256 UNIMPL epoll_wait
416 257 UNIMPL remap_file_pages
417 258 UNIMPL set_tid_address
418 259 UNIMPL timer_create
419 260 UNIMPL timer_settime
420 261 UNIMPL timer_gettime
421 262 UNIMPL timer_getoverrun
422 263 UNIMPL timer_delete
423 264 STD { int linux32_sys_clock_settime(clockid_t which, \
424 linux32_timespecp_t tp); }
425 265 STD { int linux32_sys_clock_gettime(clockid_t which, \
426 linux32_timespecp_t tp); }
427 266 STD { int linux32_sys_clock_getres(clockid_t which, \
428 linux32_timespecp_t tp); }
429 267 STD { int linux32_sys_clock_nanosleep(clockid_t which, int flags, \
430 linux32_timespecp_t rqtp, linux32_timespecp_t rmtp); }
431 268 UNIMPL statfs64
432 269 UNIMPL fstatfs64
433 270 UNIMPL tgkill
434 271 UNIMPL utimes
435 272 UNIMPL fadvise64_64
436 273 UNIMPL vserver
437 274 UNIMPL mbind
438 275 UNIMPL get_mempolicy
439 276 UNIMPL set_mempolicy
440 277 UNIMPL mq_open
441 278 UNIMPL mq_unlink
442 279 UNIMPL mq_timedsend
443 280 UNIMPL mq_timedreceive
444 281 UNIMPL mq_notify
445 282 UNIMPL mq_getsetattr
446 283 UNIMPL kexec_load
447