--- zzzz-none-000/linux-2.6.19.2/arch/alpha/kernel/srm_env.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/arch/alpha/kernel/srm_env.c 2007-01-11 07:38:19.000000000 +0000 @@ -2,7 +2,7 @@ * srm_env.c - Access to SRM environment * variables through linux' procfs * - * (C) 2001,2002,2006 by Jan-Benedict Glaw + * Copyright (C) 2001-2002 Jan-Benedict Glaw * * This driver is at all a modified version of Erik Mouw's * Documentation/DocBook/procfs_example.c, so: thank @@ -21,7 +21,7 @@ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more * details. - * + * * You should have received a copy of the GNU General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., 59 Temple Place, @@ -29,6 +29,33 @@ * */ +/* + * Changelog + * ~~~~~~~~~ + * + * Thu, 22 Aug 2002 15:10:43 +0200 + * - Update Config.help entry. I got a number of emails asking + * me to tell their senders if they could make use of this + * piece of code... So: "SRM is something like BIOS for your + * Alpha" + * - Update code formatting a bit to better conform CodingStyle + * rules. + * - So this is v0.0.5, with no changes (except formatting) + * + * Wed, 22 May 2002 00:11:21 +0200 + * - Fix typo on comment (SRC -> SRM) + * - Call this "Version 0.0.4" + * + * Tue, 9 Apr 2002 18:44:40 +0200 + * - Implement access by variable name and additionally + * by number. This is done by creating two subdirectories + * where one holds all names (like the old directory + * did) and the other holding 256 files named like "0", + * "1" and so on. + * - Call this "Version 0.0.3" + * + */ + #include #include #include @@ -40,7 +67,7 @@ #define BASE_DIR "srm_environment" /* Subdir in /proc/ */ #define NAMED_DIR "named_variables" /* Subdir for known variables */ #define NUMBERED_DIR "numbered_variables" /* Subdir for all variables */ -#define VERSION "0.0.6" /* Module version */ +#define VERSION "0.0.5" /* Module version */ #define NAME "srm_env" /* Module name */ MODULE_AUTHOR("Jan-Benedict Glaw "); @@ -79,6 +106,7 @@ static srm_env_t srm_numbered_entries[256]; + static int srm_env_read(char *page, char **start, off_t off, int count, int *eof, void *data) @@ -87,23 +115,21 @@ unsigned long ret; srm_env_t *entry; - if (off != 0) { - *eof = 1; - return 0; - } + if(off != 0) + return -EFAULT; entry = (srm_env_t *) data; ret = callback_getenv(entry->id, page, count); - if ((ret >> 61) == 0) { + if((ret >> 61) == 0) nbytes = (int) ret; - *eof = 1; - } else + else nbytes = -EFAULT; return nbytes; } + static int srm_env_write(struct file *file, const char __user *buffer, unsigned long count, void *data) @@ -129,7 +155,7 @@ ret1 = callback_setenv(entry->id, buf, count); if ((ret1 >> 61) == 0) { - do + do ret2 = callback_save_env(); while((ret2 >> 61) == 1); res = (int) ret1; @@ -146,14 +172,14 @@ srm_env_t *entry; unsigned long var_num; - if (base_dir) { + if(base_dir) { /* * Remove named entries */ - if (named_dir) { + if(named_dir) { entry = srm_named_entries; - while (entry->name != NULL && entry->id != 0) { - if (entry->proc_entry) { + while(entry->name != NULL && entry->id != 0) { + if(entry->proc_entry) { remove_proc_entry(entry->name, named_dir); entry->proc_entry = NULL; @@ -166,11 +192,11 @@ /* * Remove numbered entries */ - if (numbered_dir) { - for (var_num = 0; var_num <= 255; var_num++) { + if(numbered_dir) { + for(var_num = 0; var_num <= 255; var_num++) { entry = &srm_numbered_entries[var_num]; - if (entry->proc_entry) { + if(entry->proc_entry) { remove_proc_entry(entry->name, numbered_dir); entry->proc_entry = NULL; @@ -186,6 +212,7 @@ return; } + static int __init srm_env_init(void) { @@ -195,7 +222,7 @@ /* * Check system */ - if (!alpha_using_srm) { + if(!alpha_using_srm) { printk(KERN_INFO "%s: This Alpha system doesn't " "know about SRM (or you've booted " "SRM->MILO->Linux, which gets " @@ -206,14 +233,14 @@ /* * Init numbers */ - for (var_num = 0; var_num <= 255; var_num++) + for(var_num = 0; var_num <= 255; var_num++) sprintf(number[var_num], "%ld", var_num); /* * Create base directory */ base_dir = proc_mkdir(BASE_DIR, NULL); - if (!base_dir) { + if(base_dir == NULL) { printk(KERN_ERR "Couldn't create base dir /proc/%s\n", BASE_DIR); goto cleanup; @@ -224,7 +251,7 @@ * Create per-name subdirectory */ named_dir = proc_mkdir(NAMED_DIR, base_dir); - if (!named_dir) { + if(named_dir == NULL) { printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n", BASE_DIR, NAMED_DIR); goto cleanup; @@ -235,7 +262,7 @@ * Create per-number subdirectory */ numbered_dir = proc_mkdir(NUMBERED_DIR, base_dir); - if (!numbered_dir) { + if(numbered_dir == NULL) { printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n", BASE_DIR, NUMBERED_DIR); goto cleanup; @@ -247,10 +274,10 @@ * Create all named nodes */ entry = srm_named_entries; - while (entry->name && entry->id) { + while(entry->name != NULL && entry->id != 0) { entry->proc_entry = create_proc_entry(entry->name, 0644, named_dir); - if (!entry->proc_entry) + if(entry->proc_entry == NULL) goto cleanup; entry->proc_entry->data = (void *) entry; @@ -264,13 +291,13 @@ /* * Create all numbered nodes */ - for (var_num = 0; var_num <= 255; var_num++) { + for(var_num = 0; var_num <= 255; var_num++) { entry = &srm_numbered_entries[var_num]; entry->name = number[var_num]; entry->proc_entry = create_proc_entry(entry->name, 0644, numbered_dir); - if (!entry->proc_entry) + if(entry->proc_entry == NULL) goto cleanup; entry->id = var_num; @@ -291,6 +318,7 @@ return -ENOMEM; } + static void __exit srm_env_exit(void) { @@ -300,5 +328,7 @@ return; } + module_init(srm_env_init); module_exit(srm_env_exit); +