[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 メーリングリストの案内