[Suzaku:00757] #include <asm/io.h>とした場合のコンパイルエラーについて

email@hidden
2007年 1月 26日 (金) 14:39:57 JST


お世話になっております。
伊藤と申します。

早速ですが...
自作のデバイスドライバにてinb()、outb()のAPIを使うため、#include <asm/io.h>とすると
【「platform/suzaku.h」が見つかりません】旨のコンパイルエラーとなってしまいます。
お手数ですが対処方法を教えてください。

尚、各種情報は以下の通りです。
●***  ↓のフォルダにsuzaku.hはあります ***
/home/somebody/uClinux-dist-20051110/linux-2.4.x/arch/ppc/platform/

●*** makeの実行 ***
「/home/somebody/uClinux-dist-20051110/」に「memrw」フォルダを作成し、
その中にソースファイル(memrw.c)&makefileを置いています。
/home/somebody/uClinux-dist-20051110/memrwにてmake実行

●*** makefile ***
ifndef ROOTDIR
#ROOTDIR=../uClinux-dist-20051110-suzaku6
ROOTDIR=/home/somebody/uClinux-dist-20051110-suzaku6
endif
ROMFSDIR = $(ROOTDIR)/romfs
ROMFSINST = romfs-inst.sh
PATH := $(PATH):$(ROOTDIR)/tools

UCLINUX_BUILD_USER = 1
include $(ROOTDIR)/.config
LIBCDIR = $(CONFIG_LIBCDIR)
include $(ROOTDIR)/config.arch

OBJS = memrw.o
all: $(OBJS)
clean:
	-rm -f $(OBJS)
%.o: %.c
	$(CC) -c $(CFLAGS) -o $@ $<

●**** コンパイルエラーは以下の内容です ****
In file included from /home/somebody/uClinux-dist-20051110-suzaku6/lib/uClibc/
include/asm/io.h:27, from memrw.c 14:
/home/somebody/uClinux-dist-20051110-suzaku6/lib/uClibc/include/asm/ibm4xx.h:82:
30: platforms/suzaku.h: No such file or directory
make: ***[memrw.o]Error 1

●**** ソースファイルは以下の内容です(必要箇所抜粋)****
#define __KERNEL__
#define	MODULE

#include <linux/config.h>
#include <linux/kernel.h>
#include	 <linux/module.h>
#include	 <linux/init.h>
#include	 <linux/fs.h>		// file_operations
#include	 <linux/sched.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/ioport.h>
#include	 <linux/string.h>	// copy_to_user/copy_from_user
#include <asm/io.h>
#include	 <asm/uaccess.h>
/***************************************************************************************/
static int memrw_read( struct file *file, char *user_buf, size_t u_count,  loff_t *lo)
{
	int cnt=0,err=0;
	unsigned short *ptr;

	memset( &kern_buf, 0, sizeof( kern_buf ));	/* Kernel領域バッファ初期化	*/
	ptr = (unsigned short *)MEMRW_BASE_ADR;

	for( cnt=0; cnt<u_count; cnt++ )
		kern_buf[cnt] = inb( ptr++ );	/* DataRead */

	if( 0 != copy_to_user( user_buf, &kern_buf, cnt ) )
		return -1;

	return( cnt );
}
/***************************************************************************************/
static int memrw_write( struct file *file, const char *user_buf, size_t u_count,  loff_t *lo)
{
	int cnt, err;
	unsigned short *ptr;

	err = copy_from_user( &kern_buf, user_buf, MEMRW_CNT_MAX );
	ptr = (unsigned short *)MEMRW_BASE_ADR;

	for( cnt=0; cnt<u_count; cnt++ )
		outb( kern_buf[cnt], ptr++ );	/* DataWrite */

	return( cnt );
}

以上、お手数ですがご教示の程よろしくお願いします。




suzaku メーリングリストの案内