Article View: cn.bbs.comp.unix.programming.kernel
Article #64���һ������unresolved symbol������
From: fion
Date: Wed, 13 Mar 2002 09:56
Date: Wed, 13 Mar 2002 09:56
82 lines
3349 bytes
3349 bytes
�������ˣ�Ҳ�Լ�����һЩ�취��������Ȼû�н����������̴��
Դ�������£����Ƚ϶̣�
�õ���sys_semget,sys_semctl,sys_semop
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sem.h>
#include <asm/uaccess.h>
#include <sys/syscall.h>
#define __NR_sem_init 240
#define __NR_sem_rele 241
#define __NR_sem_p 242
#define __NR_sem_v 243
extern void * sys_call_table[];
int (*original_call)(void);
asmlinkage int sys_sem_init(key_t key, int count)
{
int semid;
union semun arg;
arg.val = count;
semid = sys_semget(key, 1, IPC_CREAT|0777);
sys_semctl(semid, 0, SETVAL, arg);
return semid;
}
asmlinkage int sys_sem_rele(int semid)
{
union semun arg;
sys_semctl(semid, 0, IPC_RMID, arg);
return 0;
}
asmlinkage int sys_sem_v(int semid, struct sembuf * psemb)
{
struct sembuf semb;
semb.sem_num = 0;
semb.sem_op = 1;
semb.sem_flg = 0;
copy_to_user(psemb, &semb, sizeof(semb));
return (sys_semop(semid, psemb, 1));
}
asmlinkage int sys_sem_p(int semid, struct sembuf * psemb)
{
struct sembuf semb;
semb.sem_num = 0;
semb.sem_op = -1;
semb.sem_flg = 0;
copy_to_user(psemb, &semb, sizeof(semb));
return (sys_semop(semid, psemb, 1));
}
int init_module()
{
sys_call_table[__NR_sem_init] = sys_sem_init;
sys_call_table[__NR_sem_rele] = sys_sem_rele;
sys_call_table[__NR_sem_p] = sys_sem_p;
sys_call_table[__NR_sem_v] = sys_sem_v;
return 0;
}
void cleanup_module()
{
sys_call_table[__NR_sem_init] = original_call;
sys_call_table[__NR_sem_rele] = original_call;
sys_call_table[__NR_sem_p] = original_call;
sys_call_table[__NR_sem_v] = original_call;
}
����û����
gcc -DMODULE -D__KERNEL__ -c
ʹ�õ�ϵͳ��rh7.1
insmod��ʱ�������һ�´�����ʾ
sc.o: unresolved symbol sys_semop
sc.o: unresolved symbol sys_semctl
sc.o: unresolved symbol sys_semget
��֪����ν������ָ��
BTW���ҿ���һ��System.map�ļ�
��һ����Ϣ
c0179780 T sys_semget
c017a750 T sys_semop
c017a580 T sys_semctl
��֪�������дT��ʲô��˼��
--
[m[1;35m�� ��Դ:��UNIX��� apue.dhs.org��[FROM: 211.69.197.129][m
Technical Details
Message-ID:
<3lJ1eX$0Dd@apue.dhs.org>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!62.24.128.9.MISMATCH!news-1.opaltelecom.net!newsfeed.icl.net!newsfeed1.cidera.com!Cidera!telocity-west!TELOCITY!hub1.nntpserver.com!news-out.spamkiller.net!propagator-la!news-in-la.newsfeeds.com!news-in.superfeed.net!news.cn99.com!news.tiaozhan.com!APUEShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: 10e809,c07a29e896168f30,start X-Google-Attributes: gid10e809,public X-Google-ArrivalTime: 2002-03-13 02:08:34 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!62.24.128.9.MISMATCH!news-1.opaltelecom.net!newsfeed.icl.net!newsfeed1.cidera.com!Cidera!telocity-west!TELOCITY!hub1.nntpserver.com!news-out.spamkiller.net!propagator-la!news-in-la.newsfeeds.com!news-in.superfeed.net!news.cn99.com!news.tiaozhan.com!APUE From: fion.bbs@apue.dhs.org (fion) Newsgroups: cn.bbs.comp.unix.programming.kernel Subject: ���һ������unresolved symbol������ Date: 13 Mar 2002 09:56:37 GMT Organization: APUE Message-ID: <3lJ1eX$0Dd@apue.dhs.org> X-Filename: UKP/M.1016012961.A Lines: 82