参考:http://www.ibm.com/developerworks/cn/linux/l-proc.html 下面再给出一个proc系统中write_proc函数的例子: static int usb_power = 1; static int usb_proc_write(struct file* file, const char* buffer, unsigned long count, void* data) { #define MAX_BUFLEN 32 char *ptr, tmp_buf[MAX_BUFLEN]; int val = MAX_BUFLEN - 1; if (count < MAX_BUFLEN) val = count - 1; tmp_buf[val] = 0; if (copy_from_user(tmp_buf, buffer, val)) return -EFAULT; for (ptr = tmp_buf; isspace(*ptr); ++ptr) ; if (strncmp(ptr, "power", 5) == 0) { ptr += 5; while (isspace(*ptr)) ++ptr; val = simple_strtoul(ptr, &ptr, 10); printk("val = %d/n", val); switch(val) { case 0: usb_power = 0; gpio_set_value(S3C_GPL0, 0); gpio_set_value(S3C_GPL1, 0); printk("usb_power = 0/n"); break; case 1: usb_power = 1; gpio_set_value(S3C_GPL0, 1); gpio_set_value(S3C_GPL1, 1); printk("usb_power = 1/n"); break; default: printk("only accept 0 or 1/n"); } return count; } else { printk("usage: echo power 0/1 > /proc/driver/usb/n"); return count; } } static int usb_proc_read(char* page, char** start, off_t off, int count, int* eof, void* data) { data = (void*)page; page += sprintf(page, "usb_power = %d/n", usb_power); return (page - (char*)data); }