Hi, all, I am working on a project to reduce the memory requirement of Linux kernel code. The idea is to keep infrequent executed code on disk and load them into a buffer (code buffer) in memory at runtime. The idea is simple but there are many issues dealing with the concurrency in the kernel. Interrupt is one of them.
Since interrupt is executed asynchronously, my current solution is to assign two buffers: one for regular (non-interrupt code) and one specifically for interrupt code. However, the scheme still does not work well. The problem is that, it seems, there can multiple interrupt occur at the same in the kernel and therefore, if interrupt A is using the code buffer, another interrupt B can be issued and overwrite the code buffer(where A's code is stored). I found couples of such examples, including, driver code for ide (driver/ide/) and video (driver/video/vgacon.c) and console (driver/char/). My feeling is that since handling ide interrupt may take a while, kernel will enable other interrupts when handling an ide request. My first question is, what are other interrupts in the kernel that can allow other interrupts to be issued? Second question is, how does the kernel switch between different interrupts? Last, any suggestion on how to change my current implementation to enable loading interrupt code dynamically? Thank you Haifeng - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/