kernel

When should I write a Linux kernel module?

Some people want to move code from user space to kernel space in Linux for some reason. A lot of times the reason seems to be that the code should have particularly high priority or simply "kernel space is faster". This seems strange to me. When should I consider writing a kernel module? Are there a set of criterias? How can I motivate...

What IDE would be good for linux kernel driver development

I am using ubuntu 8.04.1 and i am trying to write a character driver in kernel mode. What would be a good ide, ideally with code completion, to do that ? ...

What is the latency in an AMD PowerNow state change operation?

In low latency trading applications we are very conscious of latency issues. There is some concern that our application may experience increased latency if the server on which it is running changes PowerNow state. Any kernel developers familiar with calling PowerNow changes and how much processor time is used for the operation and what...

What is the difference between an nanokernel and an exokernel?

I understand that they are both supposed to be small, but what are the key differences between the two? ...

NT Kernel Programming

Hi, I would like to know where to get started, or how possible it is to hook into, or patch the windows kernel(XP and up). I am specifically interested in software like McAfee Entercept, or certain antivirus scanners that patch the kernel. I would like to know how feasable it is for a startup to create software that added in functionali...

Good explanation/documentation on ftrace

I just read that the 2.6.27 kernel has a new module called ftrace which sounds a lot like suns dtrace utility. I'm having some trouble googling for documentation, I was wondering if anyone else had something. Is this something that is going to be implemented on the full programming stack like dtrace and we'll get a nice little scripting ...

malloc() and the C/C++ heap

I'm working on designing the kernel (which I'm going to actually call the "core" just to be different, but its basically the same) for an OS I'm working on. The specifics of the OS itself are irrelevant if I can't get multi-tasking, memory management, and other basic things up and running, so I need to work on that first. I've some quest...

Stack Size for Kernel Development

So I'm working on designing an OS, and I'm working on designing (not coding yet) the kernel. This is going to be for an x86 operating system, and my target is for more modern computers, so RAM can be considered to be at least 256M or more. My question is this: What is a good size to make the stack for each thread run on the system? Or b...

Making GRUB automatically boot the kernel

I am currently writing a kernel, and in an attempt to actually run it, I've decided to use GRUB. Currently, we have a script to attach GRUB's stage1, stage2, a pad file, and the actual kernel itself together which makes it bootable. The only problem is that when running it, you have to let GRUB know where the kernel is and how long it ...

x86 assembly Protected mode Keyboard Access

So I'm working on keyboard input for a very bare bones kernel that I'm throwing together, and I'm completely stuck. I can't seem to find any information online that can tell me the information I need to know. My kernel is running in protected mode right now, so I can't use the "normal" real mode keyboard routines without jumping into re...

How do I configure modprobe to find my module?

I'm trying to get a kernel module to load at boot. If I run insmod /path/to/module.ko, it works fine. But this has to be repeated every time I reboot. If I run modprobe /path/to/module.ko, it can't find the module. I know modprobe uses a configuration file, but I can't get it to load the module even after adding /path/to/module.ko to /...

C(++) Compiler Transition - Make DJGPP go away please

I'm working on writing a kernel, and I have a few friends working with me on the project. We've been using DJGPP to compile the project for a while, but we're having some cross-platform compatibility issues with compiling this way that have left my main Partnet on the project unable to compile on Windows XP. (DJGPP's GCC is having issues...

Redundant Linux Kernel System Calls

I'm currently working on a project that hooks into various system calls and writes things to a log, depending on which one was called. So, for example, when I change the permissions of a file, I write a little entry to a log file that tracks the old permission and new permission. However, I'm having some trouble pinning down exactly wh...

Are real-time linux extensions obsolete?

Do the new real-time and low latency patches from Ingo Molnar render previous real-time extensions for Linux (such as RTAI, Xenomai) obsolete? ...

Kernel Memory Management - Page Handling Design

I'm working on kernel design, and I've got some questions concerning paging. The basic idea that I have so far is this: Each program gets its own (or so it thinks) 4G of memory, minus a section somewhere that I reserve for kernel functions that the program can call. So, the OS needs to figure out some way to load the pages in memory tha...

File I/O in a Linux kernel module

I'm writing a Linux kernel module that needs to open and read files. What's the best way to accomplish that? ...

Setting up IRQ mapping

I'm following several tutorials and references trying to get my kernel set up, and I've come across voodoo code in a tutorial that isn't explained at all. Its code that I'm told maps the 16 IRQs (0-15) to ISR locations 32-47: void irq_remap(void) { outportb(0x20, 0x11); outportb(0xA0, 0x11); outportb(0x21, 0x20); outport...

Overriding functionality with modules in Linux kernel

Without getting into the details of why, I'm looking for a clean (as possible) way to replace kernel functions and system calls from a loadable module. My initial idea was to write some code to override some functions, which would take the original function (perhaps, if possible, call the function), and then add some of my own code. Th...

Virtual area to pages

In the Linux kernel, given the task_struct's mm I can access the process's list of vm_area_structs. Given these vm_area_structs, how do I get the struct pages which actually correspond to this vma? I tried looking for functions in mm/memory.c and the like, but I was at a loss. Edit: the idea is to find which pages in the vma are curre...

How do interrupts in multicore/multicpu machines work?

I recently started diving into low level OS programming. I am (very slowly) currently working through two older books, XINU and Build Your Own 32 Bit OS, as well as some resources suggested by the fine SO folks in my previous question, How to get started in operating system development. It could just be that I haven't encountered it in ...