1 $NetBSD: syscalls.master,v 1.9 2006/05/29 09:44:51 drochner Exp $
2
3 ; @(#)syscalls.master 8.1 (Berkeley) 7/19/93
4
5 ; NetBSD COMPAT_SVR4 system call name/number "master" file.
6 ; (See syscalls.conf to see what it is processed into.)
7 ;
8 ; Fields: number type [type-dependent ...]
9 ; number system call number, must be in order
10 ; type one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of
11 ; the compatibility options defined in syscalls.conf.
12 ;
13 ; types:
14 ; STD always included
15 ; OBSOL obsolete, not included in system
16 ; UNIMPL unimplemented, not included in system
17 ; NODEF included, but don't define the syscall number
18 ; NOARGS included, but don't define the syscall args structure
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 #if defined(_KERNEL_OPT)
35 #include "opt_ntp.h"
36 #include "opt_sysv.h"
37 #endif
38
39 #include <sys/param.h>
40 #include <sys/systm.h>
41 #include <sys/signal.h>
42 #include <sys/mount.h>
43 #include <sys/poll.h>
44 #include <sys/sa.h>
45 #include <sys/syscallargs.h>
46
47 #include <compat/svr4_32/svr4_32_types.h>
48 #include <compat/netbsd32/netbsd32_syscallargs.h>
49 #include <compat/svr4_32/svr4_32_time.h>
50 #include <compat/svr4_32/svr4_32_signal.h>
51 #include <compat/svr4_32/svr4_32_ucontext.h>
52 #include <compat/svr4_32/svr4_32_lwp.h>
53 #include <compat/svr4_32/svr4_32_syscallargs.h>
54 #include <compat/svr4_32/svr4_32_statvfs.h>
55 #include <compat/svr4_32/svr4_32_resource.h>
56 #include <compat/svr4_32/svr4_32_acl.h>
57 #include <compat/svr4_32/svr4_32_schedctl.h>
58
59 %%
60
61 0 NOARGS { int sys_nosys(void); } syscall
62 1 NOARGS { int netbsd32_exit(int rval); }
63 2 NOARGS { int sys_fork(void); }
64 3 NOARGS { int netbsd32_read(int fd, netbsd32_charp buf, u_int nbyte); }
65 4 NOARGS { int netbsd32_write(int fd, netbsd32_charp buf, u_int nbyte); }
66 5 STD { int svr4_32_sys_open(const netbsd32_charp path, int flags, \
67 int mode); }
68 6 NOARGS { int netbsd32_close(int fd); }
69 7 STD { int svr4_32_sys_wait(netbsd32_intp status); }
70 8 STD { int svr4_32_sys_creat(const netbsd32_charp path, int mode); }
71 9 NOARGS { int netbsd32_link(const netbsd32_charp path, const netbsd32_charp link); }
72 10 NOARGS { int netbsd32_unlink(const netbsd32_charp path); }
73 11 STD { int svr4_32_sys_execv(const netbsd32_charp path, netbsd32_charpp argp); }
74 12 NOARGS { int netbsd32_chdir(const netbsd32_charp path); }
75 13 STD { int svr4_32_sys_time(svr4_32_time_tp t); }
76 14 STD { int svr4_32_sys_mknod(const netbsd32_charp path, int mode, \
77 int dev); }
78 15 NOARGS { int netbsd32_chmod(const netbsd32_charp path, mode_t mode); }
79 16 NOARGS { int netbsd32___posix_chown(const netbsd32_charp path, uid_t \
80 uid, gid_t gid); } chown
81 17 STD { int svr4_32_sys_break(netbsd32_caddr_t nsize); }
82 18 STD { int svr4_32_sys_stat(const netbsd32_charp path, \
83 svr4_32_statp ub); }
84 19 NOARGS { netbsd32_long compat_43_netbsd32_olseek(int fd, \
85 netbsd32_long offset, int whence); }
86 20 NOARGS { pid_t sys_getpid(void); }
87 21 UNIMPL old_mount
88 22 UNIMPL System V umount
89 23 NOARGS { int netbsd32_setuid(uid_t uid); }
90 24 NOARGS { uid_t sys_getuid_with_euid(void); }
91 25 UNIMPL stime
92 26 UNIMPL pcsample
93 27 STD { int svr4_32_sys_alarm(unsigned sec); }
94 28 STD { int svr4_32_sys_fstat(int fd, svr4_32_statp sb); }
95 29 STD { int svr4_32_sys_pause(void); }
96 30 STD { int svr4_32_sys_utime(const netbsd32_charp path, \
97 svr4_32_utimbufp ubuf); }
98 31 UNIMPL was stty
99 32 UNIMPL was gtty
100 33 STD { int svr4_32_sys_access(const netbsd32_charp path, int flags); }
101 34 STD { int svr4_32_sys_nice(int prio); }
102 35 UNIMPL statfs
103 36 NOARGS { int sys_sync(void); }
104 37 STD { int svr4_32_sys_kill(int pid, int signum); }
105 38 UNIMPL fstatfs
106 39 STD { int svr4_32_sys_pgrpsys(int cmd, int pid, int pgid); }
107 40 UNIMPL xenix
108 41 NOARGS { int netbsd32_dup(u_int fd); }
109 42 NOARGS { int sys_pipe(void); }
110 43 STD { int svr4_32_sys_times(svr4_32_tms_tp tp); }
111 44 UNIMPL profil
112 45 UNIMPL plock
113 46 NOARGS { int netbsd32_setgid(gid_t gid); }
114 47 NOARGS { gid_t sys_getgid_with_egid(void); }
115 48 STD { int svr4_32_sys_signal(int signum, svr4_sig_t handler); }
116 #ifdef SYSVMSG
117 49 STD { int svr4_32_sys_msgsys(int what, int a2, int a3, \
118 int a4, int a5); }
119 #else
120 49 UNIMPL msgsys
121 #endif
122 50 STD { int svr4_32_sys_sysarch(int op, netbsd32_voidp a1); }
123 51 UNIMPL acct
124 #ifdef SYSVSHM
125 52 STD { int svr4_32_sys_shmsys(int what, int a2, int a3, \
126 int a4); }
127 #else
128 52 UNIMPL shmsys
129 #endif
130 #ifdef SYSVSEM
131 53 STD { int svr4_32_sys_semsys(int what, int a2, int a3, \
132 int a4, int a5); }
133 #else
134 53 UNIMPL semsys
135 #endif
136 54 STD { int svr4_32_sys_ioctl(int fd, netbsd32_u_long com, \
137 netbsd32_caddr_t data); }
138 55 UNIMPL uadmin
139 56 UNIMPL exch
140 57 STD { int svr4_32_sys_utssys(netbsd32_voidp a1, \
141 netbsd32_voidp a2, int sel, \
142 netbsd32_voidp a3); }
143 58 NOARGS { int netbsd32_fsync(int fd); }
144 59 NOARGS { int netbsd32_execve(const netbsd32_charp path, netbsd32_charpp argp, \
145 netbsd32_charpp envp); }
146 60 NOARGS { int netbsd32_umask(int newmask); }
147 61 NOARGS { int netbsd32_chroot(const netbsd32_charp path); }
148 62 STD { int svr4_32_sys_fcntl(int fd, int cmd, netbsd32_charp arg); }
149 63 STD { netbsd32_long svr4_32_sys_ulimit(int cmd, netbsd32_long newlimit); }
150 64 UNIMPL reserved for unix/pc
151 65 UNIMPL reserved for unix/pc
152 66 UNIMPL reserved for unix/pc
153 67 UNIMPL reserved for unix/pc
154 68 UNIMPL reserved for unix/pc
155 69 UNIMPL reserved for unix/pc
156 70 OBSOL advfs
157 71 OBSOL unadvfs
158 72 OBSOL rmount
159 73 OBSOL rumount
160 74 OBSOL rfstart
161 75 OBSOL sigret
162 76 OBSOL rdebug
163 77 OBSOL rfstop
164 78 UNIMPL rfsys
165 79 NOARGS { int netbsd32_rmdir(const netbsd32_charp path); }
166 80 NOARGS { int netbsd32_mkdir(const netbsd32_charp path, mode_t mode); }
167 81 STD { int svr4_32_sys_getdents(int fd, netbsd32_charp buf, \
168 int nbytes); }
169 82 OBSOL libattach
170 83 OBSOL libdetach
171 84 UNIMPL sysfs
172 85 STD { int svr4_32_sys_getmsg(int fd, svr4_32_strbuf_tp ctl, \
173 svr4_32_strbuf_tp dat, netbsd32_intp flags); }
174 86 STD { int svr4_32_sys_putmsg(int fd, svr4_32_strbuf_tp ctl, \
175 svr4_32_strbuf_tp dat, int flags); }
176 87 NOARGS { int netbsd32_poll(netbsd32_pollfdp_t fds, u_int nfds, \
177 int timeout); }
178 88 STD { int svr4_32_sys_lstat(const netbsd32_charp path, \
179 svr4_32_stat_tp ub); }
180 89 NOARGS { int netbsd32_symlink(const netbsd32_charp path, const netbsd32_charp link); }
181 90 NOARGS { int netbsd32_readlink(const netbsd32_charp path, netbsd32_charp buf, netbsd32_size_t count); }
182 91 NOARGS { int netbsd32_getgroups(int gidsetsize, netbsd32_gid_tp gidset); }
183 92 NOARGS { int netbsd32_setgroups(int gidsetsize, const netbsd32_gid_tp gidset); }
184 93 NOARGS { int netbsd32_fchmod(int fd, int mode); }
185 94 NOARGS { int netbsd32___posix_fchown(int fd, int uid, int gid); } \
186 fchown
187 95 STD { int svr4_32_sys_sigprocmask(int how, \
188 const svr4_32_sigset_tp set, \
189 svr4_32_sigset_tp oset); }
190 96 STD { int svr4_32_sys_sigsuspend( \
191 const svr4_32_sigset_tp set); }
192 97 STD { int svr4_32_sys_sigaltstack( \
193 const svr4_32_sigaltstack_tp nss, \
194 svr4_32_sigaltstack_tp oss); }
195 98 STD { int svr4_32_sys_sigaction(int signum, \
196 const svr4_32_sigaction_tp nsa, \
197 svr4_32_sigaction_tp osa); }
198 99 STD { int svr4_32_sys_sigpending(int what, \
199 svr4_32_sigset_tp set); }
200 100 STD { int svr4_32_sys_context(int func, \
201 svr4_32_ucontext_tp uc); }
202 101 UNIMPL evsys
203 102 UNIMPL evtrapret
204 103 STD { int svr4_32_sys_statvfs(const netbsd32_charp path, \
205 svr4_32_statvfs_tp fs); }
206 104 STD { int svr4_32_sys_fstatvfs(int fd, \
207 svr4_32_statvfs_tp fs); }
208 105 UNIMPL getloadavg
209 106 UNIMPL nfssvc
210 107 STD { int svr4_32_sys_waitsys(int grp, int id, \
211 svr4_32_siginfo_tp info, int options); }
212 108 UNIMPL sigsendsys
213 109 STD { int svr4_32_sys_hrtsys(int cmd, int fun, int sub, \
214 netbsd32_voidp rv1, netbsd32_voidp rv2); }
215 110 UNIMPL acancel
216 111 UNIMPL async
217 112 UNIMPL priocntlsys
218 113 STD { int svr4_32_sys_pathconf(const netbsd32_charp path, int name); }
219 114 UNIMPL mincore
220 115 STD { netbsd32_voidp svr4_32_sys_mmap(netbsd32_voidp addr, \
221 svr4_32_size_t len, int prot, int flags, int fd, \
222 svr4_32_off_t pos); }
223 116 NOARGS { int netbsd32_mprotect(netbsd32_voidp addr, netbsd32_size_t len, int prot); }
224 117 NOARGS { int netbsd32_munmap(netbsd32_voidp addr, netbsd32_size_t len); }
225 118 STD { int svr4_32_sys_fpathconf(int fd, int name); }
226 119 NOARGS { int sys_vfork(void); }
227 120 NOARGS { int netbsd32_fchdir(int fd); }
228 121 NOARGS { int netbsd32_readv(int fd, const netbsd32_iovecp_t iovp, int iovcnt); }
229 122 NOARGS { int netbsd32_writev(int fd, const netbsd32_iovecp_t iovp, int iovcnt); }
230 123 STD { int svr4_32_sys_xstat(int two, const netbsd32_charp path, \
231 svr4_32_xstat_tp ub); }
232 124 STD { int svr4_32_sys_lxstat(int two, const netbsd32_charp path, \
233 svr4_32_xstat_tp ub); }
234 125 STD { int svr4_32_sys_fxstat(int two, int fd, \
235 svr4_32_xstat_tp sb); }
236 126 STD { int svr4_32_sys_xmknod(int two, netbsd32_charp path, \
237 svr4_32_mode_t mode, svr4_dev_t dev); }
238 127 UNIMPL clocal
239 128 STD { int svr4_32_sys_setrlimit(int which, \
240 const svr4_32_rlimit_tp rlp); }
241 129 STD { int svr4_32_sys_getrlimit(int which, \
242 svr4_32_rlimit_tp rlp); }
243 130 NOARGS { int netbsd32_lchown(const netbsd32_charp path, uid_t uid, gid_t gid); } lchown
244 131 STD { int svr4_32_sys_memcntl(netbsd32_voidp addr, \
245 svr4_32_size_t len, int cmd, netbsd32_voidp arg, \
246 int attr, int mask); }
247 132 UNIMPL getpmsg
248 133 UNIMPL putpmsg
249 134 NOARGS { int netbsd32___posix_rename(const netbsd32_charp from, const netbsd32_charp to); } \
250 rename
251 135 STD { int svr4_32_sys_uname(svr4_32_utsnamep name, \
252 int dummy); }
253 136 NOARGS { int netbsd32_setegid(gid_t egid); }
254 137 STD { int svr4_32_sys_sysconfig(int name); }
255 138 NOARGS { int netbsd32_adjtime(const netbsd32_timevalp_t delta, netbsd32_timevalp_t olddelta); }
256 139 STD { netbsd32_long svr4_32_sys_systeminfo(int what, netbsd32_charp buf, \
257 netbsd32_long len); }
258 140 UNIMPL
259 141 NOARGS { int netbsd32_seteuid(uid_t euid); }
260 142 UNIMPL vtrace
261 143 NOARGS { int sys_fork(void); } fork1
262 144 UNIMPL sigtimedwait
263 145 STD { int svr4_32_sys__lwp_info(svr4_32_lwpinfop lwpinfo);}
264 146 UNIMPL yield
265 147 UNIMPL lwp_sema_wait
266 148 UNIMPL lwp_sema_post
267 149 UNIMPL lwp_sema_trywait
268 150 UNIMPL
269 151 UNIMPL corectl
270 152 UNIMPL modctl
271 153 NOARGS { int netbsd32_fchroot(int fd); }
272 154 STD { int svr4_32_sys_utimes(const netbsd32_charp path, \
273 netbsd32_timevalp_t tptr); }
274 155 STD { int svr4_32_sys_vhangup(void); }
275 156 STD { int svr4_32_sys_gettimeofday(netbsd32_timevalp_t tp); }
276 157 NOARGS { int netbsd32_getitimer(int which, netbsd32_itimervalp_t itv); }
277 158 NOARGS { int netbsd32_setitimer(int which, \
278 const netbsd32_itimervalp_t itv, netbsd32_itimervalp_t oitv); }
279 159 STD { int svr4_32_sys__lwp_create(svr4_32_ucontext_tp uc, \
280 netbsd32_u_long flags, svr4_32_lwpid_tp lwpid); }
281 160 STD { int svr4_32_sys__lwp_exit(void); }
282 161 STD { int svr4_32_sys__lwp_suspend(svr4_lwpid_t lwpid); }
283 162 STD { int svr4_32_sys__lwp_continue(svr4_lwpid_t lwpid); }
284 163 STD { int svr4_32_sys__lwp_kill(svr4_lwpid_t lwpid, \
285 int signum); }
286 164 STD { svr4_lwpid_t svr4_sys__lwp_self(void); }
287 165 STD { netbsd32_voidp svr4_32_sys__lwp_getprivate(void); }
288 166 STD { int svr4_32_sys__lwp_setprivate(netbsd32_voidp buffer); }
289 167 STD { int svr4_32_sys__lwp_wait(svr4_lwpid_t wait_for, \
290 svr4_32_lwpid_tp departed_lwp); }
291 168 UNIMPL lwp_mutex_wakeup
292 169 UNIMPL lwp_mutex_lock
293 170 UNIMPL lwp_cond_wait
294 171 UNIMPL lwp_cond_signal
295 172 UNIMPL lwp_cond_broadcast
296 173 STD { netbsd32_ssize_t svr4_32_sys_pread(int fd, netbsd32_voidp buf, \
297 netbsd32_size_t nbyte, svr4_32_off_t off); }
298 174 STD { netbsd32_ssize_t svr4_32_sys_pwrite(int fd, const netbsd32_voidp buf, \
299 netbsd32_size_t nbyte, svr4_32_off_t off); }
300 175 STD { svr4_32_off64_t svr4_32_sys_llseek(int fd, \
301 netbsd32_long offset1, netbsd32_long offset2, int whence); }
302 176 UNIMPL inst_sync
303 177 UNIMPL srmlimitsys
304 178 UNIMPL kaio
305 179 UNIMPL cpc
306 180 UNIMPL
307 181 UNIMPL
308 182 UNIMPL
309 183 UNIMPL
310 184 UNIMPL tsolsys
311 185 STD { int svr4_32_sys_acl(netbsd32_charp path, int cmd, int num, \
312 svr4_32_aclent_tp buf); }
313 186 STD { int svr4_32_sys_auditsys(int code, int a1, int a2, \
314 int a3, int a4, int a5); }
315 187 UNIMPL processor_bind
316 188 UNIMPL processor_info
317 189 UNIMPL p_online
318 190 UNIMPL sigqueue
319 191 UNIMPL clock_gettime
320 192 UNIMPL clock_settime
321 193 UNIMPL clock_getres
322 194 UNIMPL timer_create
323 195 UNIMPL timer_delete
324 196 UNIMPL timer_settime
325 197 UNIMPL timer_gettime
326 198 UNIMPL timer_getoverrun
327 199 NOARGS { int netbsd32_nanosleep(const netbsd32_timespecp_t rqtp, \
328 netbsd32_timespecp_t rmtp); }
329 200 STD { int svr4_32_sys_facl(int fd, int cmd, int num, \
330 svr4_32_aclent_tp buf); }
331 201 UNIMPL door
332 202 NOARGS { int netbsd32_setreuid(int ruid, int euid); }
333 203 NOARGS { int netbsd32_setregid(int rgid, int egid); }
334 204 UNIMPL install_utrap
335 205 UNIMPL signotify
336 206 STD { int svr4_32_sys_schedctl(unsigned int x, int y, void **z); }
337 207 UNIMPL pset
338 208 UNIMPL sparc_utrap_install
339 209 STD { int svr4_32_sys_resolvepath(const netbsd32_charp path, \
340 netbsd32_charp buf, netbsd32_size_t bufsiz); }
341 210 UNIMPL signotifywait
342 211 UNIMPL lwp_sigredirect
343 212 UNIMPL lwp_alarm
344 213 STD { int svr4_32_sys_getdents64(int fd, \
345 svr4_32_dirent64_tp dp, \
346 int nbytes); }
347 214 STD { netbsd32_voidp svr4_32_sys_mmap64(netbsd32_voidp addr, \
348 svr4_32_size_t len, int prot, int flags, int fd, \
349 svr4_32_off64_t pos); }
350 215 STD { int svr4_32_sys_stat64(const netbsd32_charp path, \
351 svr4_32_stat64_tp sb); }
352 216 STD { int svr4_32_sys_lstat64(const netbsd32_charp path, \
353 svr4_32_stat64_tp sb); }
354 217 STD { int svr4_32_sys_fstat64(int fd, \
355 svr4_32_stat64_tp sb); }
356 218 STD { int svr4_32_sys_statvfs64(const netbsd32_charp path, \
357 svr4_32_statvfs64_tp fs); }
358 219 STD { int svr4_32_sys_fstatvfs64(int fd, \
359 svr4_32_statvfs64_tp fs); }
360 220 STD { int svr4_32_sys_setrlimit64(int which, \
361 const svr4_32_rlimit64_tp rlp); }
362 221 STD { int svr4_32_sys_getrlimit64(int which, \
363 svr4_32_rlimit64_tp rlp); }
364 222 STD { netbsd32_ssize_t svr4_32_sys_pread64(int fd, netbsd32_voidp buf, \
365 netbsd32_size_t nbyte, svr4_32_off64_t off); }
366 223 STD { netbsd32_ssize_t svr4_32_sys_pwrite64(int fd, \
367 const netbsd32_voidp buf, netbsd32_size_t nbyte, svr4_32_off64_t off); }
368 224 STD { int svr4_32_sys_creat64(netbsd32_charp path, int mode); }
369 225 STD { int svr4_32_sys_open64(netbsd32_charp path, int flags, \
370 int mode); }
371 226 UNIMPL rpcsys
372 227 UNIMPL
373 228 UNIMPL
374 229 UNIMPL
375 230 STD { int svr4_32_sys_socket(int domain, int type, \
376 int protocol); }
377 231 NOARGS { int netbsd32_socketpair(int domain, int type, \
378 int protocol, netbsd32_intp rsv); }
379 232 NOARGS { int netbsd32_bind(int s, const netbsd32_sockaddrp_t name, \
380 int namelen); }
381 233 NOARGS { int netbsd32_listen(int s, int backlog); }
382 234 NOARGS { int compat_43_netbsd32_oaccept(int s, \
383 netbsd32_sockaddrp_t name, netbsd32_intp anamelen); }
384 235 NOARGS { int netbsd32_connect(int s, const netbsd32_sockaddrp_t name, \
385 int namelen); }
386 236 NOARGS { int netbsd32_shutdown(int s, int how); }
387 237 NOARGS { int compat_43_netbsd32_orecv(int s, netbsd32_caddr_t buf, int len, \
388 int flags); }
389 238 NOARGS { int compat_43_netbsd32_orecvfrom(int s, \
390 netbsd32_caddr_t buf, netbsd32_size_t len, int flags, \
391 netbsd32_caddr_t from, netbsd32_intp fromlenaddr); }
392 239 NOARGS { int compat_43_netbsd32_orecvmsg(int s, \
393 netbsd32_omsghdrp_t msg, int flags); }
394 240 NOARGS { int compat_43_netbsd32_osend(int s, netbsd32_caddr_t buf, \
395 int len, int flags); }
396 241 NOARGS { int compat_43_netbsd32_osendmsg(int s, netbsd32_caddr_t msg, \
397 int flags); }
398 242 NOARGS { netbsd32_ssize_t netbsd32_sendto(int s, const netbsd32_voidp buf, \
399 netbsd32_size_t len, int flags, const netbsd32_sockaddrp_t to, \
400 int tolen); }
401 243 NOARGS { int compat_43_netbsd32_ogetpeername(int fdes, \
402 netbsd32_caddr_t asa, netbsd32_intp alen); }
403 244 NOARGS { int compat_43_netbsd32_ogetsockname(int fdec, \
404 netbsd32_caddr_t asa, netbsd32_intp alen); }
405 245 NOARGS { int netbsd32_getsockopt(int s, int level, int name, \
406 netbsd32_voidp val, netbsd32_intp avalsize); }
407 246 NOARGS { int netbsd32_setsockopt(int s, int level, int name, \
408 const netbsd32_voidp val, int valsize); }
409 247 UNIMPL sockconfig
410 248 UNIMPL { int netbsd32_ntp_gettime(netbsd32_ntptimevalp_t ntvp); }
411 #if defined(NTP) || !defined(_KERNEL)
412 249 NOARGS { int netbsd32_ntp_adjtime(netbsd32_timexp_t tp); }
413 #else
414 249 EXCL ntp_adjtime
415 #endif
416 250 UNIMPL lwp_mutex_unlock
417 251 UNIMPL lwp_mutex_trylock
418 252 UNIMPL lwp_mutex_init
419 253 UNIMPL cladm
420 254 UNIMPL lwp_sigtimedwait
421 255 UNIMPL umount2
Cache object: 5010c03909684d89803925cdbf2a42ff
|