xref: /minix3/minix/lib/libsys/mapdriver.c (revision 181fb1b2b562251d07c6fcffd262fd8efbcd2ee0)
1433d6423SLionel Sambuc #include "syslib.h"
2433d6423SLionel Sambuc 
3433d6423SLionel Sambuc #include <string.h>
4433d6423SLionel Sambuc #include <unistd.h>
5433d6423SLionel Sambuc 
6433d6423SLionel Sambuc int
mapdriver(const char * label,devmajor_t major,const int * domains,int ndomains)7*181fb1b2SDavid van Moolenbroek mapdriver(const char * label, devmajor_t major, const int * domains,
8*181fb1b2SDavid van Moolenbroek 	int ndomains)
9433d6423SLionel Sambuc {
10433d6423SLionel Sambuc 	message m;
11*181fb1b2SDavid van Moolenbroek 	int i;
12433d6423SLionel Sambuc 
13433d6423SLionel Sambuc 	memset(&m, 0, sizeof(m));
14433d6423SLionel Sambuc 	m.m_lsys_vfs_mapdriver.label = (vir_bytes)label;
15433d6423SLionel Sambuc 	m.m_lsys_vfs_mapdriver.labellen = strlen(label) + 1;
16433d6423SLionel Sambuc 	m.m_lsys_vfs_mapdriver.major = major;
17*181fb1b2SDavid van Moolenbroek 	m.m_lsys_vfs_mapdriver.ndomains = ndomains;
18*181fb1b2SDavid van Moolenbroek 	if (ndomains > (int)__arraycount(m.m_lsys_vfs_mapdriver.domains))
19*181fb1b2SDavid van Moolenbroek 		ndomains = (int)__arraycount(m.m_lsys_vfs_mapdriver.domains);
20*181fb1b2SDavid van Moolenbroek 	for (i = 0; i < ndomains; i++)
21*181fb1b2SDavid van Moolenbroek 		m.m_lsys_vfs_mapdriver.domains[i] = domains[i];
22433d6423SLionel Sambuc 
23433d6423SLionel Sambuc 	return _taskcall(VFS_PROC_NR, VFS_MAPDRIVER, &m);
24433d6423SLionel Sambuc }
25