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