This source file includes following definitions.
- osf1_cvt_flock_from_native
- osf1_cvt_flock_to_native
- osf1_cvt_msghdr_xopen_to_native
- osf1_cvt_pathconf_name_to_native
- osf1_cvt_rusage_from_native
- osf1_cvt_sigaction_from_native
- osf1_cvt_sigaction_to_native
- osf1_cvt_sigaltstack_from_native
- osf1_cvt_sigaltstack_to_native
- osf1_cvt_sigset_from_native
- osf1_cvt_sigset_to_native
- osf1_cvt_stat_from_native
- osf1_cvt_statfs_from_native
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 #include <sys/param.h>
62 #include <sys/systm.h>
63 #include <sys/namei.h>
64 #include <sys/proc.h>
65 #include <sys/file.h>
66 #include <sys/stat.h>
67 #include <sys/filedesc.h>
68 #include <sys/kernel.h>
69 #include <sys/malloc.h>
70 #include <sys/mman.h>
71 #include <sys/mount.h>
72 #include <sys/signal.h>
73 #include <sys/signalvar.h>
74 #include <sys/reboot.h>
75 #include <sys/syscallargs.h>
76 #include <sys/exec.h>
77 #include <sys/vnode.h>
78 #include <sys/socketvar.h>
79 #include <sys/resource.h>
80 #include <sys/resourcevar.h>
81 #include <sys/wait.h>
82 #include <uvm/uvm_extern.h>
83
84 #include <nfs/rpcv2.h>
85 #include <nfs/nfsproto.h>
86 #include <nfs/nfs.h>
87 #include <nfs/nfsmount.h>
88
89 #include <compat/osf1/osf1.h>
90 #include <compat/osf1/osf1_util.h>
91 #include <compat/osf1/osf1_cvt.h>
92
93 const struct emul_flags_xtab osf1_access_flags_xtab[] = {
94 #if 0
95 { OSF1_F_OK, OSF1_F_OK, F_OK },
96 #endif
97 { OSF1_X_OK, OSF1_X_OK, X_OK },
98 { OSF1_W_OK, OSF1_W_OK, W_OK },
99 { OSF1_R_OK, OSF1_R_OK, R_OK },
100 { 0 }
101 };
102
103 const struct emul_flags_xtab osf1_fcntl_getsetfd_flags_rxtab[] = {
104 { FD_CLOEXEC, FD_CLOEXEC, OSF1_FD_CLOEXEC },
105 { 0 }
106 };
107
108 const struct emul_flags_xtab osf1_fcntl_getsetfd_flags_xtab[] = {
109 { OSF1_FD_CLOEXEC, OSF1_FD_CLOEXEC, FD_CLOEXEC },
110 { 0 }
111 };
112
113
114 const struct emul_flags_xtab osf1_fcntl_getsetfl_flags_rxtab[] = {
115 { FASYNC, FASYNC, OSF1_FASYNC },
116 { 0 }
117 };
118
119
120 const struct emul_flags_xtab osf1_fcntl_getsetfl_flags_xtab[] = {
121 { OSF1_FASYNC, OSF1_FASYNC, FASYNC },
122 { 0 }
123 };
124
125 const struct emul_flags_xtab osf1_mmap_flags_xtab[] = {
126 { OSF1_MAP_SHARED, OSF1_MAP_SHARED, MAP_SHARED },
127 { OSF1_MAP_PRIVATE, OSF1_MAP_PRIVATE, MAP_PRIVATE },
128 { OSF1_MAP_TYPE, OSF1_MAP_FILE, MAP_FILE },
129 { OSF1_MAP_TYPE, OSF1_MAP_ANON, MAP_ANON },
130 { OSF1_MAP_FIXED, OSF1_MAP_FIXED, MAP_FIXED },
131 #if 0
132 { OSF1_MAP_VARIABLE, OSF1_MAP_VARIABLE, 0 },
133 #endif
134 { OSF1_MAP_HASSEMAPHORE, OSF1_MAP_HASSEMAPHORE, MAP_HASSEMAPHORE },
135 { OSF1_MAP_INHERIT, OSF1_MAP_INHERIT, MAP_INHERIT },
136 #if 0
137 { OSF1_MAP_UNALIGNED, OSF1_MAP_UNALIGNED, ??? },
138 #endif
139 { 0 }
140 };
141
142 const struct emul_flags_xtab osf1_mmap_prot_xtab[] = {
143 #if 0
144 { OSF1_PROT_NONE, OSF1_PROT_NONE, PROT_NONE },
145 #endif
146 { OSF1_PROT_READ, OSF1_PROT_READ, PROT_READ },
147 { OSF1_PROT_WRITE, OSF1_PROT_WRITE, PROT_READ|PROT_WRITE },
148 { OSF1_PROT_EXEC, OSF1_PROT_EXEC, PROT_READ|PROT_EXEC },
149 { 0 }
150 };
151
152 const struct emul_flags_xtab osf1_nfs_mount_flags_xtab[] = {
153 { OSF1_NFSMNT_SOFT, OSF1_NFSMNT_SOFT, NFSMNT_SOFT, },
154 { OSF1_NFSMNT_WSIZE, OSF1_NFSMNT_WSIZE, NFSMNT_WSIZE, },
155 { OSF1_NFSMNT_RSIZE, OSF1_NFSMNT_RSIZE, NFSMNT_RSIZE, },
156 { OSF1_NFSMNT_TIMEO, OSF1_NFSMNT_TIMEO, NFSMNT_TIMEO, },
157 { OSF1_NFSMNT_RETRANS, OSF1_NFSMNT_RETRANS, NFSMNT_RETRANS, },
158 #if 0
159 { OSF1_NFSMNT_HOSTNAME, OSF1_NFSMNT_HOSTNAME, ???, },
160 #endif
161 { OSF1_NFSMNT_INT, OSF1_NFSMNT_INT, NFSMNT_INT, },
162 { OSF1_NFSMNT_NOCONN, OSF1_NFSMNT_NOCONN, NFSMNT_NOCONN, },
163 #if 0
164 { OSF1_NFSMNT_NOAC, OSF1_NFSMNT_NOAC, ???, },
165 { OSF1_NFSMNT_ACREGMIN, OSF1_NFSMNT_ACREGMIN, ???, },
166 { OSF1_NFSMNT_ACREGMAX, OSF1_NFSMNT_ACREGMAX, ???, },
167 { OSF1_NFSMNT_ACDIRMIN, OSF1_NFSMNT_ACDIRMIN, ???, },
168 { OSF1_NFSMNT_ACDIRMAX, OSF1_NFSMNT_ACDIRMAX, ???, },
169 { OSF1_NFSMNT_NOCTO, OSF1_NFSMNT_NOCTO, ???, },
170 { OSF1_NFSMNT_POSIX, OSF1_NFSMNT_POSIX, ???, },
171 { OSF1_NFSMNT_AUTO, OSF1_NFSMNT_AUTO, ???, },
172 { OSF1_NFSMNT_SEC, OSF1_NFSMNT_SEC, ???, },
173 { OSF1_NFSMNT_TCP, OSF1_NFSMNT_TCP, ???, },
174 { OSF1_NFSMNT_PROPLIST, OSF1_NFSMNT_PROPLIST, ???, },
175 #endif
176 { 0 }
177 };
178
179 const struct emul_flags_xtab osf1_open_flags_rxtab[] = {
180 { O_ACCMODE, O_RDONLY, OSF1_O_RDONLY },
181 { O_ACCMODE, O_WRONLY, OSF1_O_WRONLY },
182 { O_ACCMODE, O_RDWR, OSF1_O_RDWR },
183 { O_NONBLOCK, O_NONBLOCK, OSF1_O_NONBLOCK },
184 { O_APPEND, O_APPEND, OSF1_O_APPEND },
185 #if 0
186 { ???, ???, O_DEFER },
187 #endif
188 { O_CREAT, O_CREAT, OSF1_O_CREAT },
189 { O_TRUNC, O_TRUNC, OSF1_O_TRUNC },
190 { O_EXCL, O_EXCL, OSF1_O_EXCL },
191 { O_NOCTTY, O_NOCTTY, OSF1_O_NOCTTY },
192 { O_SYNC, O_SYNC, OSF1_O_SYNC },
193 { O_NDELAY, O_NDELAY, OSF1_O_NDELAY },
194 #if 0
195 { ???, ???, O_DRD },
196 #endif
197 { O_DSYNC, O_DSYNC, OSF1_O_DSYNC },
198 { O_RSYNC, O_RSYNC, OSF1_O_RSYNC },
199 { 0 }
200 };
201
202 const struct emul_flags_xtab osf1_open_flags_xtab[] = {
203 { OSF1_O_ACCMODE, OSF1_O_RDONLY, O_RDONLY },
204 { OSF1_O_ACCMODE, OSF1_O_WRONLY, O_WRONLY },
205 { OSF1_O_ACCMODE, OSF1_O_RDWR, O_RDWR },
206 { OSF1_O_NONBLOCK, OSF1_O_NONBLOCK, O_NONBLOCK },
207 { OSF1_O_APPEND, OSF1_O_APPEND, O_APPEND },
208 #if 0
209 { OSF1_O_DEFER, OSF1_O_DEFER, ??? },
210 #endif
211 { OSF1_O_CREAT, OSF1_O_CREAT, O_CREAT },
212 { OSF1_O_TRUNC, OSF1_O_TRUNC, O_TRUNC },
213 { OSF1_O_EXCL, OSF1_O_EXCL, O_EXCL },
214 { OSF1_O_NOCTTY, OSF1_O_NOCTTY, O_NOCTTY },
215 { OSF1_O_SYNC, OSF1_O_SYNC, O_SYNC },
216 { OSF1_O_NDELAY, OSF1_O_NDELAY, O_NDELAY },
217 #if 0
218 { OSF1_O_DRD, OSF1_O_DRD, ??? },
219 #endif
220 { OSF1_O_DSYNC, OSF1_O_DSYNC, O_DSYNC },
221 { OSF1_O_RSYNC, OSF1_O_RSYNC, O_RSYNC },
222 { 0 }
223 };
224
225 const struct emul_flags_xtab osf1_reboot_opt_xtab[] = {
226 #if 0
227 { OSF1_RB_AUTOBOOT, OSF1_RB_AUTOBOOT, RB_AUTOBOOT },
228 #endif
229 { OSF1_RB_ASKNAME, OSF1_RB_ASKNAME, RB_ASKNAME },
230 { OSF1_RB_SINGLE, OSF1_RB_SINGLE, RB_SINGLE },
231 { OSF1_RB_NOSYNC, OSF1_RB_NOSYNC, RB_NOSYNC },
232 #if 0
233 { OSF1_RB_KDB, OSF1_RB_KDB, RB_KDB },
234 #endif
235 { OSF1_RB_HALT, OSF1_RB_HALT, RB_HALT },
236 { OSF1_RB_INITNAME, OSF1_RB_INITNAME, RB_INITNAME },
237 { OSF1_RB_DFLTROOT, OSF1_RB_DFLTROOT, RB_DFLTROOT },
238 #if 0
239 { OSF1_RB_ALTBOOT, OSF1_RB_ALTBOOT, ??? },
240 { OSF1_RB_UNIPROC, OSF1_RB_UNIPROC, ??? },
241 { OSF1_RB_PARAM, OSF1_RB_PARAM, ??? },
242 #endif
243 { OSF1_RB_DUMP, OSF1_RB_DUMP, RB_DUMP },
244 { 0 }
245 };
246
247 const struct emul_flags_xtab osf1_sendrecv_msg_flags_xtab[] = {
248 { OSF1_MSG_OOB, OSF1_MSG_OOB, MSG_OOB },
249 { OSF1_MSG_PEEK, OSF1_MSG_PEEK, MSG_PEEK },
250 { OSF1_MSG_DONTROUTE, OSF1_MSG_DONTROUTE, MSG_DONTROUTE },
251 { OSF1_MSG_EOR, OSF1_MSG_EOR, MSG_EOR },
252 { OSF1_MSG_TRUNC, OSF1_MSG_TRUNC, MSG_TRUNC },
253 { OSF1_MSG_CTRUNC, OSF1_MSG_CTRUNC, MSG_CTRUNC },
254 { OSF1_MSG_WAITALL, OSF1_MSG_WAITALL, MSG_WAITALL },
255 { 0 }
256 };
257
258 const struct emul_flags_xtab osf1_sigaction_flags_rxtab[] = {
259 { SA_ONSTACK, SA_ONSTACK, OSF1_SA_ONSTACK },
260 { SA_RESTART, SA_RESTART, OSF1_SA_RESTART },
261 { SA_NOCLDSTOP, SA_NOCLDSTOP, OSF1_SA_NOCLDSTOP },
262 { SA_NODEFER, SA_NODEFER, OSF1_SA_NODEFER },
263 { SA_RESETHAND, SA_RESETHAND, OSF1_SA_RESETHAND },
264 { SA_NOCLDWAIT, SA_NOCLDWAIT, OSF1_SA_NOCLDWAIT },
265 #if 0
266 { SA_SIGINFO, SA_SIGINFO, OSF1_SA_SIGINFO },
267 #endif
268 { 0 },
269 };
270
271 const struct emul_flags_xtab osf1_sigaction_flags_xtab[] = {
272 { OSF1_SA_ONSTACK, OSF1_SA_ONSTACK, SA_ONSTACK },
273 { OSF1_SA_RESTART, OSF1_SA_RESTART, SA_RESTART },
274 { OSF1_SA_NOCLDSTOP, OSF1_SA_NOCLDSTOP, SA_NOCLDSTOP },
275 { OSF1_SA_NODEFER, OSF1_SA_NODEFER, SA_NODEFER },
276 { OSF1_SA_RESETHAND, OSF1_SA_RESETHAND, SA_RESETHAND },
277 { OSF1_SA_NOCLDWAIT, OSF1_SA_NOCLDWAIT, SA_NOCLDWAIT },
278 #if 0
279 { OSF1_SA_SIGINFO, OSF1_SA_SIGINFO, SA_SIGINFO },
280 #endif
281 { 0 },
282 };
283
284 const struct emul_flags_xtab osf1_sigaltstack_flags_rxtab[] = {
285 { SS_ONSTACK, SS_ONSTACK, OSF1_SS_ONSTACK },
286 { SS_DISABLE, SS_DISABLE, OSF1_SS_DISABLE },
287 #if 0
288 { ???, ???, OSF1_SS_NOMASK },
289 { ???, ???, OSF1_SS_UCONTEXT },
290 #endif
291 { 0 },
292 };
293
294 const struct emul_flags_xtab osf1_sigaltstack_flags_xtab[] = {
295 { OSF1_SS_ONSTACK, OSF1_SS_ONSTACK, SS_ONSTACK },
296 { OSF1_SS_DISABLE, OSF1_SS_DISABLE, SS_DISABLE },
297 #if 0
298 { OSF1_SS_NOMASK, OSF1_SS_NOMASK, ??? },
299 { OSF1_SS_UCONTEXT, OSF1_SS_UCONTEXT, ??? },
300 #endif
301 { 0 },
302 };
303
304 const struct emul_flags_xtab osf1_wait_options_xtab[] = {
305 { OSF1_WNOHANG, OSF1_WNOHANG, WNOHANG },
306 { OSF1_WUNTRACED, OSF1_WUNTRACED, WUNTRACED },
307 { 0 }
308 };
309
310 void
311 osf1_cvt_flock_from_native(nf, of)
312 const struct flock *nf;
313 struct osf1_flock *of;
314 {
315
316 memset(of, 0, sizeof *of);
317
318 of->l_start = nf->l_start;
319 of->l_len = nf->l_len;
320 of->l_pid = nf->l_pid;
321
322 switch (nf->l_type) {
323 case F_RDLCK:
324 of->l_type = OSF1_F_RDLCK;
325 break;
326
327 case F_WRLCK:
328 of->l_type = OSF1_F_WRLCK;
329 break;
330
331 case F_UNLCK:
332 of->l_type = OSF1_F_UNLCK;
333 break;
334 }
335
336 switch (nf->l_whence) {
337 case SEEK_SET:
338 of->l_whence = OSF1_SEEK_SET;
339 break;
340
341 case SEEK_CUR:
342 of->l_whence = OSF1_SEEK_CUR;
343 break;
344
345 case SEEK_END:
346 of->l_whence = OSF1_SEEK_END;
347 break;
348 }
349 }
350
351 int
352 osf1_cvt_flock_to_native(of, nf)
353 const struct osf1_flock *of;
354 struct flock *nf;
355 {
356
357 memset(nf, 0, sizeof *nf);
358
359 nf->l_start = of->l_start;
360 nf->l_len = of->l_len;
361 nf->l_pid = of->l_pid;
362
363 switch (of->l_type) {
364 case OSF1_F_RDLCK:
365 nf->l_type = F_RDLCK;
366 break;
367
368 case OSF1_F_WRLCK:
369 nf->l_type = F_WRLCK;
370 break;
371
372 case OSF1_F_UNLCK:
373 nf->l_type = F_UNLCK;
374 break;
375
376 default:
377 return (EINVAL);
378 }
379
380 switch (of->l_whence) {
381 case OSF1_SEEK_SET:
382 nf->l_whence = SEEK_SET;
383 break;
384
385 case OSF1_SEEK_CUR:
386 nf->l_whence = SEEK_CUR;
387 break;
388
389 case OSF1_SEEK_END:
390 nf->l_whence = SEEK_END;
391 break;
392
393 default:
394 return (EINVAL);
395 }
396
397 return (0);
398 }
399
400 int
401 osf1_cvt_msghdr_xopen_to_native(omh, bmh)
402 const struct osf1_msghdr_xopen *omh;
403 struct msghdr *bmh;
404 {
405 unsigned long leftovers;
406
407 memset(bmh, 0, sizeof *bmh);
408 bmh->msg_name = omh->msg_name;
409 bmh->msg_namelen = omh->msg_namelen;
410 bmh->msg_iov = NULL;
411 bmh->msg_iovlen = omh->msg_iovlen;
412
413
414 if (bmh->msg_control != NULL || bmh->msg_controllen != 0)
415 {
416 printf("osf1_cvt_msghdr_xopen_to_native: control\n");
417 return (EINVAL);
418 }
419
420
421 bmh->msg_flags = emul_flags_translate(osf1_sendrecv_msg_flags_xtab,
422 omh->msg_flags, &leftovers);
423 if (leftovers != 0)
424 {
425 printf("osf1_cvt_msghdr_xopen_to_native: leftovers 0x%lx\n", leftovers);
426 return (EINVAL);
427 }
428
429 return (0);
430 }
431
432 int
433 osf1_cvt_pathconf_name_to_native(oname, bnamep)
434 int oname, *bnamep;
435 {
436 int error;
437
438 error = 0;
439 switch (oname) {
440 case OSF1__PC_CHOWN_RESTRICTED:
441 *bnamep = _PC_CHOWN_RESTRICTED;
442 break;
443
444 case OSF1__PC_LINK_MAX:
445 *bnamep = _PC_LINK_MAX;
446 break;
447
448 case OSF1__PC_MAX_CANON:
449 *bnamep = _PC_MAX_CANON;
450 break;
451
452 case OSF1__PC_MAX_INPUT:
453 *bnamep = _PC_MAX_INPUT;
454 break;
455
456 case OSF1__PC_NAME_MAX:
457 *bnamep = _PC_NAME_MAX;
458 break;
459
460 case OSF1__PC_NO_TRUNC:
461 *bnamep = _PC_NO_TRUNC;
462 break;
463
464 case OSF1__PC_PATH_MAX:
465 *bnamep = _PC_PATH_MAX;
466 break;
467
468 case OSF1__PC_PIPE_BUF:
469 *bnamep = _PC_PIPE_BUF;
470 break;
471
472 case OSF1__PC_VDISABLE:
473 *bnamep = _PC_VDISABLE;
474 break;
475
476 default:
477 error = EINVAL;
478 break;
479 }
480
481 return (error);
482 }
483
484
485
486
487 void
488 osf1_cvt_rusage_from_native(ru, oru)
489 const struct rusage *ru;
490 struct osf1_rusage *oru;
491 {
492
493 oru->ru_utime.tv_sec = ru->ru_utime.tv_sec;
494 oru->ru_utime.tv_usec = ru->ru_utime.tv_usec;
495
496 oru->ru_stime.tv_sec = ru->ru_stime.tv_sec;
497 oru->ru_stime.tv_usec = ru->ru_stime.tv_usec;
498
499 oru->ru_maxrss = ru->ru_maxrss;
500 oru->ru_ixrss = ru->ru_ixrss;
501 oru->ru_idrss = ru->ru_idrss;
502 oru->ru_isrss = ru->ru_isrss;
503 oru->ru_minflt = ru->ru_minflt;
504 oru->ru_majflt = ru->ru_majflt;
505 oru->ru_nswap = ru->ru_nswap;
506 oru->ru_inblock = ru->ru_inblock;
507 oru->ru_oublock = ru->ru_oublock;
508 oru->ru_msgsnd = ru->ru_msgsnd;
509 oru->ru_msgrcv = ru->ru_msgrcv;
510 oru->ru_nsignals = ru->ru_nsignals;
511 oru->ru_nvcsw = ru->ru_nvcsw;
512 oru->ru_nivcsw = ru->ru_nivcsw;
513 }
514
515
516
517
518 void
519 osf1_cvt_sigaction_from_native(bsa, osa)
520 const struct sigaction *bsa;
521 struct osf1_sigaction *osa;
522 {
523 osa->sa__handler = bsa->sa_handler;
524 osf1_cvt_sigset_from_native(&bsa->sa_mask, &osa->sa_mask);
525 osa->sa_flags = 0;
526
527
528 if ((bsa->sa_flags & SA_ONSTACK) != 0)
529 osa->sa_flags |= OSF1_SA_ONSTACK;
530 if ((bsa->sa_flags & SA_RESTART) != 0)
531 osa->sa_flags |= OSF1_SA_RESTART;
532 if ((bsa->sa_flags & SA_NOCLDSTOP) != 0)
533 osa->sa_flags |= OSF1_SA_NOCLDSTOP;
534 if ((bsa->sa_flags & SA_NOCLDWAIT) != 0)
535 osa->sa_flags |= OSF1_SA_NOCLDWAIT;
536 if ((bsa->sa_flags & SA_NODEFER) != 0)
537 osa->sa_flags |= OSF1_SA_NODEFER;
538 if ((bsa->sa_flags & SA_RESETHAND) != 0)
539 osa->sa_flags |= OSF1_SA_RESETHAND;
540 if ((bsa->sa_flags & SA_SIGINFO) != 0)
541 osa->sa_flags |= OSF1_SA_SIGINFO;
542 }
543
544 int
545 osf1_cvt_sigaction_to_native(osa, bsa)
546 const struct osf1_sigaction *osa;
547 struct sigaction *bsa;
548 {
549 bsa->sa_handler = osa->sa__handler;
550 osf1_cvt_sigset_to_native(&osa->sa_mask, &bsa->sa_mask);
551 bsa->sa_flags = 0;
552
553
554 if ((osa->sa_flags & OSF1_SA_ONSTACK) != 0)
555 bsa->sa_flags |= SA_ONSTACK;
556 if ((osa->sa_flags & OSF1_SA_RESTART) != 0)
557 bsa->sa_flags |= SA_RESTART;
558 if ((osa->sa_flags & OSF1_SA_RESETHAND) != 0)
559 bsa->sa_flags |= SA_RESETHAND;
560 if ((osa->sa_flags & OSF1_SA_NOCLDSTOP) != 0)
561 bsa->sa_flags |= SA_NOCLDSTOP;
562 if ((osa->sa_flags & OSF1_SA_NOCLDWAIT) != 0)
563 bsa->sa_flags |= SA_NOCLDWAIT;
564 if ((osa->sa_flags & OSF1_SA_NODEFER) != 0)
565 bsa->sa_flags |= SA_NODEFER;
566 if ((osa->sa_flags & OSF1_SA_SIGINFO) != 0)
567 bsa->sa_flags |= SA_SIGINFO;
568
569 return(0);
570 }
571
572 void
573 osf1_cvt_sigaltstack_from_native(bss, oss)
574 const struct sigaltstack *bss;
575 struct osf1_sigaltstack *oss;
576 {
577
578 oss->ss_sp = bss->ss_sp;
579 oss->ss_size = bss->ss_size;
580
581
582 oss->ss_flags = emul_flags_translate(osf1_sigaltstack_flags_rxtab,
583 bss->ss_flags, NULL);
584 }
585
586 int
587 osf1_cvt_sigaltstack_to_native(oss, bss)
588 const struct osf1_sigaltstack *oss;
589 struct sigaltstack *bss;
590 {
591 unsigned long leftovers;
592
593 bss->ss_sp = oss->ss_sp;
594 bss->ss_size = oss->ss_size;
595
596
597 bss->ss_flags = emul_flags_translate(osf1_sigaltstack_flags_xtab,
598 oss->ss_flags, &leftovers);
599
600 if (leftovers != 0) {
601 printf("osf1_cvt_sigaltstack_to_native: leftovers = 0x%lx\n",
602 leftovers);
603 return (EINVAL);
604 }
605
606 return (0);
607 }
608
609 void
610 osf1_cvt_sigset_from_native(bss, oss)
611 const sigset_t *bss;
612 osf1_sigset_t *oss;
613 {
614 int i, newsig;
615
616 osf1_sigemptyset(oss);
617 for (i = 1; i < NSIG; i++) {
618 if (sigismember(bss, i)) {
619 newsig = osf1_signal_rxlist[i];
620 if (newsig)
621 osf1_sigaddset(oss, newsig);
622 }
623 }
624 }
625
626 int
627 osf1_cvt_sigset_to_native(oss, bss)
628 const osf1_sigset_t *oss;
629 sigset_t *bss;
630 {
631 int i, newsig;
632
633 sigemptyset(bss);
634 for (i = 1; i < OSF1_NSIG; i++) {
635 if (osf1_sigismember(oss, i)) {
636 newsig = osf1_signal_xlist[i];
637 if (newsig)
638 sigaddset(bss, newsig);
639 }
640 }
641 return (0);
642 }
643
644
645
646
647 void
648 osf1_cvt_stat_from_native(st, ost)
649 const struct stat *st;
650 struct osf1_stat *ost;
651 {
652
653 ost->st_dev = osf1_cvt_dev_from_native(st->st_dev);
654 ost->st_ino = st->st_ino;
655 ost->st_mode = st->st_mode;
656 ost->st_nlink = st->st_nlink;
657 ost->st_uid = st->st_uid == -2 ? (u_int16_t) -2 : st->st_uid;
658 ost->st_gid = st->st_gid == -2 ? (u_int16_t) -2 : st->st_gid;
659 ost->st_rdev = osf1_cvt_dev_from_native(st->st_rdev);
660 ost->st_size = st->st_size;
661 ost->st_atime_sec = st->st_atime;
662 ost->st_spare1 = 0;
663 ost->st_mtime_sec = st->st_mtime;
664 ost->st_spare2 = 0;
665 ost->st_ctime_sec = st->st_ctime;
666 ost->st_spare3 = 0;
667 ost->st_blksize = st->st_blksize;
668 ost->st_blocks = st->st_blocks;
669 ost->st_flags = st->st_flags;
670 ost->st_gen = st->st_gen;
671 }
672
673 void
674 osf1_cvt_statfs_from_native(bsfs, osfs)
675 const struct statfs *bsfs;
676 struct osf1_statfs *osfs;
677 {
678
679 memset(osfs, 0, sizeof (struct osf1_statfs));
680 if (!strncmp(MOUNT_FFS, bsfs->f_fstypename, MFSNAMELEN))
681 osfs->f_type = OSF1_MOUNT_UFS;
682 else if (!strncmp(MOUNT_NFS, bsfs->f_fstypename, MFSNAMELEN))
683 osfs->f_type = OSF1_MOUNT_NFS;
684 else if (!strncmp(MOUNT_MFS, bsfs->f_fstypename, MFSNAMELEN))
685 osfs->f_type = OSF1_MOUNT_MFS;
686 else
687
688 osfs->f_type = OSF1_MOUNT_ADDON;
689 osfs->f_flags = bsfs->f_flags;
690 osfs->f_fsize = bsfs->f_bsize;
691 osfs->f_bsize = bsfs->f_iosize;
692 osfs->f_blocks = bsfs->f_blocks;
693 osfs->f_bfree = bsfs->f_bfree;
694 osfs->f_bavail = bsfs->f_bavail;
695 osfs->f_files = bsfs->f_files;
696 osfs->f_ffree = bsfs->f_ffree;
697 memcpy(&osfs->f_fsid, &bsfs->f_fsid,
698 max(sizeof bsfs->f_fsid, sizeof osfs->f_fsid));
699
700 memcpy(osfs->f_mntonname, bsfs->f_mntonname,
701 max(sizeof bsfs->f_mntonname, sizeof osfs->f_mntonname));
702 memcpy(osfs->f_mntfromname, bsfs->f_mntfromname,
703 max(sizeof bsfs->f_mntfromname, sizeof osfs->f_mntfromname));
704
705 }