patch-2.1.67 linux/drivers/sound/sound_firmware.c
Next file: linux/drivers/sound/sound_firmware.h
Previous file: linux/drivers/sound/sound_config.h
Back to the patch index
Back to the overall index
- Lines: 59
- Date:
Sat Nov 29 10:33:21 1997
- Orig file:
v2.1.66/linux/drivers/sound/sound_firmware.c
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.1.66/linux/drivers/sound/sound_firmware.c linux/drivers/sound/sound_firmware.c
@@ -0,0 +1,58 @@
+#define __KERNEL_SYSCALLS__
+#include <linux/fs.h>
+#include <linux/mm.h>
+#include <linux/malloc.h>
+#include <linux/unistd.h>
+#include <asm/uaccess.h>
+
+static int errno;
+
+static int do_mod_firmware_load(const char *fn, char **fp)
+{
+ int fd;
+ long l;
+ char *dp;
+
+ fd = open(fn, 0, 0);
+ if (fd == -1)
+ {
+ printk(KERN_INFO "Unable to load '%s'.\n", fn);
+ return 0;
+ }
+ l = lseek(fd, 0L, 2);
+ if (l <= 0 || l > 65535)
+ {
+ printk(KERN_INFO "Invalid firmware '%s'\n", fn);
+ sys_close(fd);
+ return 0;
+ }
+ lseek(fd, 0L, 0);
+ dp = kmalloc(l, GFP_KERNEL);
+ if (dp == NULL)
+ {
+ printk(KERN_INFO "Out of memory loading '%s'.\n", fn);
+ sys_close(fd);
+ return 0;
+ }
+ if (read(fd, dp, l) != l)
+ {
+ printk(KERN_INFO "Failed to read '%s'.\n", fn);
+ kfree(dp);
+ sys_close(fd);
+ return 0;
+ }
+ close(fd);
+ *fp = dp;
+ return (int) l;
+}
+
+int mod_firmware_load(const char *fn, char **fp)
+{
+ int r;
+ unsigned long fs = get_fs();
+
+ set_fs(get_ds());
+ r = do_mod_firmware_load(fn, fp);
+ set_fs(fs);
+ return r;
+}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov