cd_setdevmap(3X)
cd_setdevmap --
set or unset major and minor numbers assignments for a CD-ROM device
Synopsis
cc [flag . . . ] file . . . -lcdfs -lgen [library] . . .
#include <sys/cdrom.h>
int cd_setdevmap(const char *path, int cmd, int *new_major,
int *new_minor);
Description
cd_setdevmap sets (reassigns) or unsets, depending on the value of
cmd,
the major and minor numbers of a device file to new values so the
appropriate device on the host system is accessed.
The major and minor number of any device files on a CD-ROM
are assigned by the CD-ROM publisher during manufacturing.
These values may not match the major and minor numbers assigned to the
physical devices on the host system.
When a device file is referenced, the major and minor number assigned
using the cd_setdevmap function or the values recorded on the
media are used.
When the CD-ROM is unmounted, any new major and minor number assignments
are invalidated.
The cd_setdevmap function should be used before the device file
is used, otherwise the change will not take effect until the device file
is closed and reopened.
Only a privileged user can use the cd_setdevmap function.
The maximum number of device files per CD-ROM that can be reset is defined in
sys/cdrom.h.
The cd_setdevmap function must be specified as follows:
- path
-
Points to a device file within the CD-ROM file hierarchy.
- cmd
-
Specifies the command to execute (set or unset).
cmd is one of the following:
- CD_SETDMAP
-
Specifies that the original major and minor number pair of
a device file (specified by path)
be replaced with the value specified by new_major and new_minor.
Any previous reassignments are overridden.
- CD_UNSETDMAP
-
Specifies that the major and minor numbers of the device file
pointed to by path should be unset (the values on the
mounted CD-ROM will be used from then on).
- new_major
-
Identifies the memory location where the major number is stored.
- new_minor
-
Identifies the memory location where the minor number is stored.
Return values
For CD_SETDMAP, exit status is 1 if the major and minor number
of the device file is successfully reassigned, and the exit status is
0 if no more assignments are allowed.
For CD_UNSETDMAP, the exit status is 1 if the major and minor
number assignments of the device file is successfully unset,
and the exit status is 0 if the major and minor number assignments of
the device files are not found.
Exit status is -1 if an error occurs, and errno
is set to indicate the error as follows:
- EACCES
-
Search permission is denied for a component of the path prefix.
- EACCES
-
Write permission on the device file pointed to by path is denied.
- EFAULT
-
The address of path, new_major, or new_minor is invalid.
- EINTR
-
A signal was caught during the cd_setdevmap function.
- EINVAL
-
The value of cmd is invalid.
- EINVAL
-
The path argument points to a device file that is not within the
CD-ROM file hierarchy.
- EINVAL
-
The file pointed to by path is not a device file.
- EMFILE
-
Too many file descriptors are currently open in the calling process.
- ENAMETOOLONG
-
The length of the path string exceeds MAXPATHLEN.
- ENAMETOOLONG
-
A pathname component is longer than MAXNAMELEN while
_POSIX_NO_TRUNC is in effect.
- ENFILE
-
The system file table is full.
- ENOENT
-
A component of path does not exist.
- ENOENT
-
The path argument points to an empty string.
- ENOTDIR
-
A component of the path prefix is not a directory.
- ENXIO
-
The CD-ROM is not in the drive.
- ENXIO
-
A read error occurred.
- EPERM
-
User does not have read/write permission for the specified device file.
References
cd_getdevmap(3X),
cddevsuppl(1M),
cdsuf(1M)
Rock Ridge Interchange Protocol from the Rock Ridge Technical
Working Group
30 January 1998
© 1998 The Santa Cruz Operation, Inc. All rights reserved.