Date: Wed, 31 Aug 2011 23:41:29 +0400 From: Victor <vicmrml@gmail.com> To: freebsd-arch@freebsd.org Subject: Privileged mode commands in FreeBSD processes Message-ID: <4E5E8E69.1040506@gmail.com>
next in thread | raw e-mail | index | archive | help
Is it possible to write and start a program in FreeBSD, which could execute processor commands of previleged modes (protection rings), commonly prohibited to a process in the user mode? For example we could permit the process direct access to i/o ports (IN and OUT commands on PC architecture), execution of the software interrupt command with any operand (INT), access to descriptor tables registers (GDT, LDT, etc.) with capability of changing content of both these registers and descriptor tables themselves (situated in the RAM). We could also allow the process to change flag bits in the registers of CPU, responsible for processor modes (memory addressing modes, transition from protected to real mode and vice versa, etc.) In fact, if this feature exists in FreeBSD, it must switch the processor for the time of execution this process to the mode with higher privileges (to the protection ring from 2 to 0, not 3 in x86). I would like to ask the FreeBSD community, does this possibility exist in FreeBSD? I understand the problem can be easily solved by deviding the program into two parts: the process (COFF or ELF file) and the driver. All the code, containing privileged commands, could be placed in the driver, as the rest of the code (its unprivileged part) could be contained in the process. As far as I understand, the driver code is executed in the 0 ring mode, so it has no restrictions. On the other hand it would be interesting to have such an opportunity for common processes in both educational (e. g. studying assembler privileged mode commands) and technical purposes. Of course this feature is a great threat for system safety, and besides programs, using it, can easily completely destroy the system, however it could be useful for some aims. Does anything of such kind exist in FreeBSD? If it does, please give me a reference in the FreeBSD documentation. Victor.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E5E8E69.1040506>