060e488247
Add back in a scheme to emulate old type major/minor numbers via hooks into stat, linprocfs to return major/minors that Linux app's expect. Currently only /dev/null is always registered. Drivers can register via the Linux type shim similar to the ioctl shim but by using linux_device_register_handler/linux_device_unregister_handler functions. The structure is: struct linux_device_handler { char *bsd_driver_name; char *linux_driver_name; char *bsd_device_name; char *linux_device_name; int linux_major; int linux_minor; int linux_char_device; }; Linprocfs uses this to display the major number of the driver. The soon to be available linsysfs will use it to fill in the driver name. Linux_stat uses it to translate the major/minor into Linux type values. Note major numbers are dynamically assigned via passing in a -1 for the major number so we don't need to keep track of them. This is somewhat needed due to us switching to our devfs. MegaCli will not run until I add in the linsysfs and mfi Linux compat changes. Sponsored by: IronPort Systems
46 lines
1.2 KiB
Makefile
46 lines
1.2 KiB
Makefile
# $FreeBSD$
|
|
|
|
.PATH: ${.CURDIR}/../../compat/linux ${.CURDIR}/../../${MACHINE_ARCH}/linux
|
|
|
|
KMOD= linux
|
|
SRCS= linux_dummy.c linux_file.c linux_getcwd.c linux_ioctl.c linux_ipc.c \
|
|
linux_machdep.c linux_mib.c linux_misc.c linux_signal.c linux_socket.c \
|
|
linux_stats.c linux_sysctl.c linux_sysent.c linux_sysvec.c \
|
|
linux_util.c opt_inet6.h opt_mac.h \
|
|
vnode_if.h device_if.h bus_if.h
|
|
OBJS= linux_locore.o
|
|
|
|
.if ${MACHINE_ARCH} == "i386"
|
|
SRCS+= linux_ptrace.c linux_uid16.c imgact_linux.c opt_cpu.h
|
|
.endif
|
|
|
|
EXPORT_SYMS=
|
|
EXPORT_SYMS+= linux_emul_path
|
|
EXPORT_SYMS+= linux_get_osname
|
|
EXPORT_SYMS+= linux_get_osrelease
|
|
EXPORT_SYMS+= linux_ifname
|
|
EXPORT_SYMS+= linux_ioctl_register_handler
|
|
EXPORT_SYMS+= linux_ioctl_unregister_handler
|
|
|
|
CLEANFILES= linux_assym.h linux_genassym.o
|
|
|
|
linux_assym.h: linux_genassym.o
|
|
.if exists(@)
|
|
linux_assym.h: @/kern/genassym.sh
|
|
.endif
|
|
sh @/kern/genassym.sh linux_genassym.o > ${.TARGET}
|
|
|
|
linux_locore.o: linux_locore.s linux_assym.h
|
|
${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
|
|
${.IMPSRC} -o ${.TARGET}
|
|
|
|
linux_genassym.o: linux_genassym.c linux.h @ machine
|
|
${CC} -c ${CFLAGS:N-fno-common} ${.IMPSRC}
|
|
|
|
.if !defined(KERNBUILDDIR)
|
|
opt_inet6.h:
|
|
echo "#define INET6 1" > opt_inet6.h
|
|
.endif
|
|
|
|
.include <bsd.kmod.mk>
|