🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.unix.programming.kernel
Article #64

���һ������unresolved symbol������

#64
From: fion
Date: Wed, 13 Mar 2002 09:56
82 lines
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��ʲô��˼��
--
�� ��Դ:��UNIX��� apue.dhs.org��[FROM: 211.69.197.129] 
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!APUE

Show 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