dell_flash_unlock: Add support for FreeBSD
Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>audit2-merge1
parent
dcbd13425e
commit
731884c9e6
|
@ -18,6 +18,13 @@
|
||||||
#endif /* __i386__ */
|
#endif /* __i386__ */
|
||||||
#endif /* __OpenBSD__ */
|
#endif /* __OpenBSD__ */
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <machine/cpufunc.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif /* __FreeBSD__ */
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "accessors.h"
|
#include "accessors.h"
|
||||||
|
@ -42,7 +49,7 @@ sys_outb(unsigned int port, uint8_t data)
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
outb(data, port);
|
outb(data, port);
|
||||||
#endif
|
#endif
|
||||||
#if defined(__OpenBSD__)
|
#if defined(__OpenBSD__) || defined(__FreeBSD__)
|
||||||
outb(port, data);
|
outb(port, data);
|
||||||
#endif
|
#endif
|
||||||
#if defined(__NetBSD__)
|
#if defined(__NetBSD__)
|
||||||
|
@ -56,7 +63,7 @@ sys_outl(unsigned int port, uint32_t data)
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
outl(data, port);
|
outl(data, port);
|
||||||
#endif
|
#endif
|
||||||
#if defined(__OpenBSD__)
|
#if defined(__OpenBSD__) || defined(__FreeBSD__)
|
||||||
outl(port, data);
|
outl(port, data);
|
||||||
#endif
|
#endif
|
||||||
#if defined(__NetBSD__)
|
#if defined(__NetBSD__)
|
||||||
|
@ -67,7 +74,8 @@ sys_outl(unsigned int port, uint32_t data)
|
||||||
uint8_t
|
uint8_t
|
||||||
sys_inb(unsigned int port)
|
sys_inb(unsigned int port)
|
||||||
{
|
{
|
||||||
#if defined(__linux__) || defined (__OpenBSD__)
|
#if defined(__linux__) || defined (__OpenBSD__) \
|
||||||
|
|| defined(__FreeBSD__)
|
||||||
return inb(port);
|
return inb(port);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -82,7 +90,8 @@ sys_inb(unsigned int port)
|
||||||
uint32_t
|
uint32_t
|
||||||
sys_inl(unsigned int port)
|
sys_inl(unsigned int port)
|
||||||
{
|
{
|
||||||
#if defined(__linux__) || defined (__OpenBSD__)
|
#if defined(__linux__) || defined (__OpenBSD__) \
|
||||||
|
|| defined(__FreeBSD__)
|
||||||
return inl(port);
|
return inl(port);
|
||||||
#endif
|
#endif
|
||||||
#if defined(__NetBSD__)
|
#if defined(__NetBSD__)
|
||||||
|
@ -115,6 +124,28 @@ sys_iopl(int level)
|
||||||
#endif /* __amd64__ */
|
#endif /* __amd64__ */
|
||||||
#endif /* __NetBSD__ */
|
#endif /* __NetBSD__ */
|
||||||
|
|
||||||
|
#if defined(__FreeBSD__)
|
||||||
|
/* Refer to io(4) manual page. This assumes the legacy behavior
|
||||||
|
* where opening /dev/io raises the IOPL of the process */
|
||||||
|
static int io_fd = -1;
|
||||||
|
|
||||||
|
/* Requesting privileged access */
|
||||||
|
if (level > 0) {
|
||||||
|
if (io_fd == -1) {
|
||||||
|
io_fd = open("/dev/io", O_RDONLY);
|
||||||
|
return (io_fd == -1) ? -1 : 0;
|
||||||
|
}
|
||||||
|
/* Lowering access to lowest level */
|
||||||
|
} else if (level == 0 && io_fd != -1) {
|
||||||
|
if (close(io_fd) == -1) {
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
io_fd = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
#endif /* __FreeBSD__ */
|
||||||
|
|
||||||
errno = ENOSYS;
|
errno = ENOSYS;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue