* creating a software driver
@ 2002-11-16 6:21 Chris Ison
2002-11-16 9:29 ` Neale Banks
2002-11-16 10:42 ` Guenther Sohler
0 siblings, 2 replies; 3+ messages in thread
From: Chris Ison @ 2002-11-16 6:21 UTC (permalink / raw)
To: linux-sound
does anyone know where I can get docs for creating a kernel level
software only driver for linux. The only docs anf howto's I can find
just have a simple hello world example.
A pointer to some software only module source in the linux kernel would
be acceptable, but so far have only found pci hardware drivers.
The aim is to create a gpl's software midi driver so I can use/create
midi editors/players and such.
Thank you in advance.
Chris Ison
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: creating a software driver
2002-11-16 6:21 creating a software driver Chris Ison
@ 2002-11-16 9:29 ` Neale Banks
2002-11-16 10:42 ` Guenther Sohler
1 sibling, 0 replies; 3+ messages in thread
From: Neale Banks @ 2002-11-16 9:29 UTC (permalink / raw)
To: linux-sound
Hi Chris,
On Sat, 16 Nov 2002, Chris Ison wrote:
> does anyone know where I can get docs for creating a kernel level
> software only driver for linux. The only docs anf howto's I can find
> just have a simple hello world example.
Have you looked in the O'Reilly book "Writing Linux Device Drivers"?
> A pointer to some software only module source in the linux kernel would
> be acceptable, but so far have only found pci hardware drivers.
>
> The aim is to create a gpl's software midi driver so I can use/create
> midi editors/players and such.
Ah, maybe the alsa virmidi driver would be a helpful start?
BTW, timidity is supposed to be able to operate as an "ALSA Client" -
which looked hopeful for my Toshi with ALi5451 (has synth, but no Linux
support :-( ) but I couldn't get this to work. What do your plans include
that wouldn't be done by getting timidity working as an ALSA client?
Regards,
Neale.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: creating a software driver
2002-11-16 6:21 creating a software driver Chris Ison
2002-11-16 9:29 ` Neale Banks
@ 2002-11-16 10:42 ` Guenther Sohler
1 sibling, 0 replies; 3+ messages in thread
From: Guenther Sohler @ 2002-11-16 10:42 UTC (permalink / raw)
To: linux-sound
A very tiny template of such a character device driver is
#include <linux/module.h>
#define MY_MOD_MAJOR 253
static int my_mod_release (struct inode *inode, struct file *file);
static int my_mod_open (struct inode *inode, struct file *file);
static int my_mod_ioctl (struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg);
static struct file_operations my_mod_fops = {
ioctl:my_mod_ioctl,
open:my_mod_open,
release:my_mod_release,
};
static struct parport *pp_use;
static unsigned char shadow[3];
static int
my_mod_release (struct inode *inode, struct file *file)
{
MOD_DEC_USE_COUNT;
return 0;
}
static int
my_mod_open (struct inode *inode, struct file *file)
{
MOD_INC_USE_COUNT;
return 0;
}
static int
my_mod_ioctl (struct inode *inode, struct file *file, unsigned int cmd,
unsigned long arg)
{
int byte, bit, val=0, i;
printk("%d %d\n",cmd,arg);
return 0;
//or return -EINVAL;
}
int
init_module (void)
{
register_chrdev (MY_MOD_MAJOR, "my_mod", &my_mod_fops);
printk("Init\n");
return 0;
}
void
cleanup_module (void)
{
printk("Release\n");
unregister_chrdev (MY_MOD_MAJOR, "my_mod");
}
I compile this with
gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2
-fomit-frame-pointer -fno-strict-aliasing -pipe -fno-strength-reduce
-m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 -DCPUX6 -DMODULE
-c -o parbit.o parbit.c
I dont know which options are really neccesary but for sure __KERNEL__ and
-MODULE
Dont forget to create a character device with mknod
Please tell me how it works for you
rds Guenther
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-11-16 10:42 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-11-16 6:21 creating a software driver Chris Ison
2002-11-16 9:29 ` Neale Banks
2002-11-16 10:42 ` Guenther Sohler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox