Re: Accessing filesystem from a KLD

From: Seb (sebastien.b_at_swissinfo.org)
Date: 06/29/05

  • Next message: Andrey Simonenko: "Re: Accessing filesystem from a KLD"
    To: freebsd-hackers@freebsd.org
    Date: Wed, 29 Jun 2005 11:55:50 +0200
    
    

    > Why not to use VOP_READ? See how it is called in dev/md.c:mdstart_vnode,
    > check kern/vfs_vnops.c:vn_open_cred for information how to lookup a file
    > name and open it.

    That's what I do, however I use the wrapper functions vn_open(), vn_rdwr() and
    so.

    But I have a problem, when I call this code :

    void *request_firmware(const char *name, size_t *size)
    {
    int flags;
    char filename[40];
    struct nameidata nd;
    struct thread *td = curthread;
    [...]
    NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, &filename[0], td);
    flags = FREAD;
    vn_open(&nd, &flags, 0, -1);
    [...]
    }

    from the KLD handler function (for testing) it works. But when I call it from
    a thread created by kthread_create() in another KLD, I have a page fault.
    A few printfs show that the call to vn_open() is responsible for the fault.
    I have not forgotten to lock Giant in my kernel thread.
    Any ideas ?
    Thanks,
    Sebastien

    _______________________________________________
    freebsd-hackers@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
    To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"


  • Next message: Andrey Simonenko: "Re: Accessing filesystem from a KLD"