[Suzaku:00544] Re: module内でpoll_wait使用について
三浦浩二
email@hidden
2006年 6月 20日 (火) 11:35:03 JST
いつもお世話になります。
(株)デザインテックの三浦です。
> コンパイル時のエラーメッセージを添えていただけると
> アドバイスしやすいかと思います。
=>
__linux__を付加しますとコンパイルは通りました。
続きまして、ユーザープロセスからmoduleにアクセスしたいのですが
suzakuの/bin内にはmknodが見当たりません。
mknod実行後、ユーザープロセスからopen, select, closeを考えています。
(# mknod /dev/usertimer c 60 0)
ユーザープロセスからmoduleにアクセスするためには
何かよいアドバイスはないでしょうか?
------------------------mod.c-------------------------------------
#define MODULE
#define __KERNEL__
#define __linux__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/signal.h>
#include <linux/wait.h>
#include <linux/fs.h>
#include <linux/poll.h>
#include <linux/sched.h>
#define DEV_NAME "UserTimer"
#define IRQ 3
static wait_queue_head_t usertimer_wait;
static int usertimer_open(struct inode *inode, struct file *file)
{
return 0;
}
static int usertimer_close(struct inode *inode, struct file *file)
{
return 0;
}
static unsigned int usertimer_poll(struct file *file, poll_table *wait)
{
poll_wait(file, &usertimer_wait, wait);
return POLLIN | POLLRDNORM;
}
static struct file_operations usertimer_fops =
{
THIS_MODULE,
NULL,
NULL,
NULL,
NULL,
usertimer_poll,
NULL,
NULL,
usertimer_open,
NULL,
usertimer_close,
NULL,
NULL,
NULL,
NULL,
NULL
};
static void usertimer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
wake_up_interruptible(&usertimer_wait);
}
int init_module(void)
{
if ( register_chrdev( 60, "usertimer", &usertimer_fops )!= 0 )
{
printk("error:register_chrdev()\n");
return 1;
}
// if (request_irq(IRQ, usertimer_interrupt, SA_INTERRUPT,
// DEV_NAME, NULL))
// return 1;
return 0;
}
void cleanup_module(void)
{
unregister_chrdev( 60, "usertimer");
free_irq(IRQ, NULL);
}
------------------------mod.c-------------------------------------
suzaku メーリングリストの案内