diff -urN linux/fs/proc/array.c linux-2.3.18-execdomains/fs/proc/array.c --- linux/fs/proc/array.c Tue Aug 31 19:35:59 1999 +++ linux-2.3.18-execdomains/fs/proc/array.c Tue Sep 14 14:13:10 1999 @@ -1328,6 +1328,7 @@ extern int get_device_list(char *); extern int get_partition_list(char *); extern int get_filesystem_list(char *); +extern int get_exec_domain_list(char *); extern int get_filesystem_info( char * ); extern int get_irq_list(char *); extern int get_dma_list(char *); @@ -1442,6 +1443,8 @@ case PROC_STRAM: return get_stram_list(page); #endif + case PROC_EXECDOMAINS: + return get_exec_domain_list(page); } return -EBADF; } diff -urN linux/fs/proc/root.c linux-2.3.18-execdomains/fs/proc/root.c --- linux/fs/proc/root.c Fri Sep 10 19:12:16 1999 +++ linux-2.3.18-execdomains/fs/proc/root.c Tue Sep 14 14:16:02 1999 @@ -633,6 +633,11 @@ S_IFREG | S_IRUGO, 1, 0, 0, 0, &proc_array_inode_operations }; +static struct proc_dir_entry proc_root_execdomains = { + PROC_EXECDOMAINS, 11,"execdomains", + S_IFREG | S_IRUGO, 1, 0, 0, + 0, &proc_array_inode_operations +}; struct proc_dir_entry proc_root_fs = { PROC_FS, 2, "fs", S_IFDIR | S_IRUGO | S_IXUGO, 2, 0, 0, @@ -750,6 +755,7 @@ proc_register(&proc_root, &proc_root_partitions); proc_register(&proc_root, &proc_root_interrupts); proc_register(&proc_root, &proc_root_filesystems); + proc_register(&proc_root, &proc_root_execdomains); proc_register(&proc_root, &proc_root_fs); proc_register(&proc_root, &proc_root_dma); proc_register(&proc_root, &proc_root_ioports); diff -urN linux/include/linux/proc_fs.h linux-2.3.18-execdomains/include/linux/proc_fs.h --- linux/include/linux/proc_fs.h Fri Sep 10 19:12:16 1999 +++ linux-2.3.18-execdomains/include/linux/proc_fs.h Tue Sep 14 14:18:30 1999 @@ -57,6 +57,7 @@ PROC_FS, PROC_SYSVIPC, PROC_DRIVER, + PROC_EXECDOMAINS, }; enum pid_directory_inos { diff -urN linux/kernel/exec_domain.c linux-2.3.18-execdomains/kernel/exec_domain.c --- linux/kernel/exec_domain.c Sat Sep 4 21:06:08 1999 +++ linux-2.3.18-execdomains/kernel/exec_domain.c Tue Sep 14 14:17:28 1999 @@ -97,6 +97,21 @@ return -EINVAL; } +/* used by fs/proc/array.c for /proc/execdomains */ +int get_exec_domain_list(char * buf) +{ + int len = 0; + struct exec_domain * tmp; + + tmp = exec_domains; + while (tmp && len < PAGE_SIZE - 80) { + len += sprintf(buf+len, "%d-%d\t%s\n", + tmp->pers_low, tmp->pers_high, tmp->name); + tmp = tmp->next; + } + return len; +} + asmlinkage long sys_personality(unsigned long personality) { struct exec_domain *it; .