From owner-freebsd-questions Fri Feb 5 08:14:57 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id IAA06503 for freebsd-questions-outgoing; Fri, 5 Feb 1999 08:14:57 -0800 (PST) (envelope-from owner-freebsd-questions@FreeBSD.ORG) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id IAA06498 for ; Fri, 5 Feb 1999 08:14:56 -0800 (PST) (envelope-from ik26+@andrew.cmu.edu) Received: from po9.andrew.cmu.edu (PO9.ANDREW.CMU.EDU [128.2.10.109]) by freefall.freebsd.org (8.9.2/8.9.2) with ESMTP id IAA04816 for ; Fri, 5 Feb 1999 08:14:50 -0800 (PST) (envelope-from ik26+@andrew.cmu.edu) Received: (from postman@localhost) by po9.andrew.cmu.edu (8.8.5/8.8.2) id LAA25191 for freebsd-questions@freefall.cdrom.com; Fri, 5 Feb 1999 11:14:44 -0500 (EST) Received: via switchmail; Fri, 5 Feb 1999 11:14:44 -0500 (EST) Received: from pcs6.andrew.cmu.edu via qmail ID ; Fri, 5 Feb 1999 11:14:35 -0500 (EST) Received: from pcs6.andrew.cmu.edu via qmail ID ; Fri, 5 Feb 1999 11:14:35 -0500 (EST) Received: from mms.4.60.Jun.27.1996.03.02.53.sun4.51.EzMail.PC.3.2.CUILIB.3.45.SNAP.NOT.LINKED.pcs6.andrew.cmu.edu.sun4m.54 via MS.5.6.pcs6.andrew.cmu.edu.sun4_51; Fri, 5 Feb 1999 11:14:35 -0500 (EST) Message-ID: Date: Fri, 5 Feb 1999 11:14:35 -0500 (EST) From: Ilhwan Kwon To: freebsd-questions@freefall.cdrom.com Subject: [help] making my system calls Sender: owner-freebsd-questions@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Hi. I am trying to write my own system call functions for BSD. I am trying to calculate the maximum amount of memory a PC needs when it is used as a router. First, I declare "u_long max_memused" in /usr/src/sys/sys/mbuf.h. Second, I add following code in m_devget function in /usr/src/sys/kern/uipc_mbuf.c. u_long mem_used = size of memory currently used by mbufs and clusters. if(mem_used > max_memused) max_memused = mem_used; Third, I make prototype for my system calls in mbuf.h like following. long get_mem_stat __P((void)); void clear_mem_stat __P((void)); Fourth, I declare above system calls in uipc_mbuf.c like following. long get_mem_stat(){ return (long) max_memused; } void clear_mem_stat(){ max_memused = 0; } Fifth, I put entries in init_sysent.c like following. struct sysent sysent[] = { /*......*/ {0, (*sy_call)get_mem_stat}, /*241 = get_mem_stat */ {0, (*sy_call)clear_mem_stat}, /*242 = clear_mem_stat */ /* ..... */ }; the 241th and 242th wer originally looked like {0, (*sy_call)no_sys}, finally, I put entries in syscalls.c "get_mem_stat" /*241 = get_mem_stat*/ "clear_mem_stat" /*242 = clear_mem_stat*/ they were originally "no_sys". Now, I recompile the kernel and reboot. but kernel library is not updated. I copy /usr/src/sys/sys/mbuf.h to /usr/include/sys/mbuf.h. I write a small program which includes and calls get_mem_stat and clear_mem_stat system calls. Whe I compile, I get "get_mem_stat" : undefined reference from the text segent" "clear_mem_stat" : undefined reference from the text segent" What did I do wrong? Any help on this matter will be greatly appreciated. Thanks -James Kwon To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message