Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Oct 2010 01:00:14 -0700
From:      Selphie Keller <selphie.keller@gmail.com>
To:        Andriy Gapon <avg@icyb.net.ua>, freebsd-hackers@freebsd.org
Subject:   Re: SYSCALL_MODULE() macro and modfind() issues
Message-ID:  <AANLkTikRqHOJ8voweZhDEfNsRAR_pEoXspLQYrVtGsRH@mail.gmail.com>
In-Reply-To: <4CC6830A.10701@icyb.net.ua>
References:  <AANLkTimVUzV3v9=y%2BWuuf%2B1fC4OYxD2Gs4j%2B=SO-M%2BP9@mail.gmail.com> <4CC6830A.10701@icyb.net.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Thanks Andriy,

Took a look at the change to src/sys/sys/sysent.h

@@ -149,7 +149,7 @@ static struct syscall_module_data name##
 };                                                             \
                                                                \
 static moduledata_t name##_mod =3D {                             \
-       #name,                                                  \
+       "sys/" #name,                                           \
        syscall_module_handler,                                 \
        &name##_syscall_mod                                     \
 };                                                             \

applied the MFC prefix to pmap port:

--- /usr/ports/sysutils/pmap/work/pmap/pmap/pmap.c.orig 2010-10-26
00:55:32.000000000 -0700
+++ /usr/ports/sysutils/pmap/work/pmap/pmap/pmap.c      2010-10-26
00:56:10.000000000 -0700
@@ -86,12 +86,12 @@ main(int argc, char **argv)
     struct kinfo_proc *kp;
     int        pmap_helper_syscall;

-    if ((modid =3D modfind("pmap_helper")) =3D=3D -1) {
+    if ((modid =3D modfind("sys/pmap_helper")) =3D=3D -1) {
                /* module not found, try to load */
                modid =3D kldload("pmap_helper.ko");
                if (modid =3D=3D -1)
                        err(1, "unable to load pmap_helper module");
-               modid =3D modfind("pmap_helper");
+               modid =3D modfind("sys/pmap_helper");
                if (modid =3D=3D -1)
                        err(1, "pmap_helper module loaded but not found");
        }

which restored functionality on freebsd 8.1.

-Estella Mystagic (Selphie)

On Tue, Oct 26, 2010 at 12:28 AM, Andriy Gapon <avg@icyb.net.ua> wrote:
> on 26/10/2010 01:01 Selphie Keller said the following:
>> hi fbsd-hackers,
>>
>> Noticed a issue in 8.1-release, 8.1p1-release and 8.1-stable
>> amd64/i386, to where modfind() will no longer find pmap_helper for the
>> /usr/ports/sysutils/pmap port, or other syscall modules using
>> SYSCALL_MODULE() macro.
>> The issue is that modfind() function no longer finds any modules using
>> SYSCALL_MODULE() macro to register the kernel module. Making it
>> difficult for userland apps to call the syscall provided. modfind()
>> always returns -1 which prevents modstat() from getting the required
>> information to perform the syscall.
>>
>> Also tested, the demo syscall module:
>
> After commit r205320 and, apparently, its MFC you need to prefix the modu=
le with
> "sys/". =A0For example:
> modstat(modfind("sys/syscall"), &stat);
>
> P.S.
> Perhaps a KPI breakage in a stable branch?
> --
> Andriy Gapon
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTikRqHOJ8voweZhDEfNsRAR_pEoXspLQYrVtGsRH>