xref: /inferno-os/libdynld/dynloadfd.c (revision d0e1d143ef6f03c75c008c7ec648859dd260cbab)
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