Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| jesperrosenkilde:reducingsyscalloverhead [2007/07/20 16:30] – JesperRosenkilde | jesperrosenkilde:reducingsyscalloverhead [2022/10/06 01:00] (current) – Add Category: GsoC, move footnote to intro KubilayKocak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Avoiding syscall Overhead ===== | ===== Avoiding syscall Overhead ===== | ||
| + | |||
| + | This project is for the 2007 Google Summer of Code. [[/ | ||
| ==== Synopsis ==== | ==== Synopsis ==== | ||
| + | |||
| At the moment the setproctitle call is implemented with a sysctl, this has the unfortunate side effect that this simple call locks the Giant-lock. As this call is a simple matter of setting a value, it could be better implemented with shared memory between the kernel and user-space. | At the moment the setproctitle call is implemented with a sysctl, this has the unfortunate side effect that this simple call locks the Giant-lock. As this call is a simple matter of setting a value, it could be better implemented with shared memory between the kernel and user-space. | ||
| ==== Project ==== | ==== Project ==== | ||
| + | |||
| This project purposes a scheme to securely share process specific data, between the kernel and a user-space process. This is done by having each process allocate a special memory page, on which the kernel and user-space process can share data. This will give the security needed, as the VM-system will make sure that no outside processes can fiddle with a process' | This project purposes a scheme to securely share process specific data, between the kernel and a user-space process. This is done by having each process allocate a special memory page, on which the kernel and user-space process can share data. This will give the security needed, as the VM-system will make sure that no outside processes can fiddle with a process' | ||
| - | //Update: Howard Su has sugested | + | //Update: Howard Su has suggested |
| ==== Milestone ==== | ==== Milestone ==== | ||
| + | |||
| This is a list of milestone, and the order in which I will take them. | This is a list of milestone, and the order in which I will take them. | ||
| Line 15: | Line 20: | ||
| - Deallocate the page. ✔ | - Deallocate the page. ✔ | ||
| - Write something to the page. ✔ | - Write something to the page. ✔ | ||
| - | - Read and write to the page from user space. | + | - Read and write to the page from user space. |
| - | - Figure out a suitable data structure. | + | - Figure out a suitable data structure. |
| - Figure out a locking scheme. | - Figure out a locking scheme. | ||
| - Add the new scheme to setproctitle, | - Add the new scheme to setproctitle, | ||
| Line 30: | Line 35: | ||
| All weeks included. | All weeks included. | ||
| + | |||
| + | ==== Patch/ | ||
| + | |||
| + | This should add a working getpid() through the page-scheme. A page is allocated on fork() and exec() and its address is accessible through the kern.usrsysshm sysctl. There is a struct on the page which is hold the pid, the pid is set from the kernel, and is accessible directly from the user process' | ||
| + | |||
| + | http:// | ||
| + | http:// | ||
| ---- | ---- | ||
| - | //This project is for the 2007 Google Summer of Code. [: | + | {{tag> |