xref: /inferno-os/libdynld/dynloadfd.c (revision 7ef44d652ae9e5e1f5b3465d73684e4a54de73c0)
1 #include "lib9.h"
2 #include <a.out.h>
3 #include <dynld.h>
4 
5 typedef struct Fd Fd;
6 struct Fd {
7 	int	fd;
8 };
9 
10 static long
11 readfd(void *a, void *buf, long nbytes)
12 {
13 	return read(((Fd*)a)->fd, buf, nbytes);
14 }
15 
16 static vlong
17 seekfd(void *a, vlong off, int t)
18 {
19 	return seek(((Fd*)a)->fd, off, t);
20 }
21 
22 static void
23 errfd(char *s)
24 {
25 	werrstr("%s", s);
26 }
27 
28 Dynobj*
29 dynloadfd(int fd, Dynsym *sym, int nsym, ulong maxsize)
30 {
31 	Fd f;
32 
33 	f.fd = fd;
34 	return dynloadgen(&f, readfd, seekfd, errfd, sym, nsym, maxsize);
35 }
36