Re: kldunload DIAGNOSTIC idea...

From: Willem Jan Withagen (wjw_at_withagen.nl)
Date: 07/20/04

  • Next message: Scott Long: "Re: kldunload DIAGNOSTIC idea..."
    To: "Brian Fundakowski Feldman" <green@freebsd.org>, "Poul-Henning Kamp" <phk@phk.freebsd.dk>
    Date: Tue, 20 Jul 2004 21:07:49 +0200
    
    

    > On Tue, Jul 20, 2004 at 08:39:57PM +0200, Poul-Henning Kamp wrote:
    > > In message <20040720183213.GC1009@green.homeunix.org>, Brian Fundakowski
    Feldma
    > > n writes:
    > > >On Tue, Jul 20, 2004 at 08:20:23PM +0200, Poul-Henning Kamp wrote:
    > > >>
    > > >> I'm pulling hair out trying to make it guaranteed safe to unload device
    > > >> driver modules, and the major pain here is to make sure there is no
    > > >> thread stuck somewhere inside the code.
    > > >>
    > > >> That gave me the idea for a simple little DIAGNOSTIC check for kldunload:
    > > >> run through the proc/thread table and look for any thread with an
    > > >> instruction counter inside the range of pages we are going to unload.
    > > >>
    > > >> Any takers ?

    Sounds like a tantalizing task, which would match with my (old) compiler
    knowledge. But I wonder if I know enough of the kernel internals to ever get it
    doing something usefull.

    > > >
    > > >You mean any thread with a stack trace that includes an instruction
    > > >counter inside those pages, don't you?
    > >
    > > That would require us to unwind the stack which I think is overkill
    > > for the purpose.
    > >
    > > The most likely case is that the thread is sleeping on something
    > > inside the kld so just checking the instruction pointer would be
    > > fine.
    > >
    > > Looking for sleep addresses inside the module might make sense too.
    >
    > It's probably not overkill -- at least in my experience most of the
    > time a driver is "doing something" it is sleeping, so the address
    > will be in mi_switch() or somewhere way out there. Sleep addresses
    > on dynamic data addresses are also a lot more common than sleep
    > addresses on static/code addresses. If someone is interested in
    > doign this, it would be very informative, especially if it could
    > catch sleeps, pending timeouts, pending callouts, etc.

    Ignorant, and without prejustice, I'd say:
    The major problem here would be to get the framework in place.
    Once that is available, it is glueing the principal code together, and whether
    it is an address, or a series of addresses from a stack-unwind. The later is
    only going to be more compute intensive.

    --WjW

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


  • Next message: Scott Long: "Re: kldunload DIAGNOSTIC idea..."

    Relevant Pages

    • Re: kldunload DIAGNOSTIC idea...
      ... >>for the purpose. ... >>Looking for sleep addresses inside the module might make sense too. ... > catch sleeps, pending timeouts, pending callouts, etc. ... busdma callbacks, cam callbacks, netisr callbacks, and on and on and on. ...
      (freebsd-arch)
    • Re: Microfocus Cobol "SLEEP" routine
      ... I had tried this but the compiler returns an error if there is no screen ... Is there a way in MF Cobol to pause program execution (sleep) for, ... Vaclav Snajdr ...
      (comp.lang.cobol)
    • Re: pascal equivalent of python "sleep"
      ... A conforming C compiler is compiler + its std libraries, ... I haven't been able to find a lowercase sleep() in msdn. ... linux windows) on different hardware and with several C compilers. ... If you can't be bothered to specify, I can't be bothered to find, so I ...
      (comp.lang.pascal.misc)
    • Re: pascal equivalent of python "sleep"
      ... Then find a sleep() in a strictly conforming C compiler! ... Surprise you will not find a function like C in a C compiler. ... linux windows) on different hardware and with several C compilers. ... If you can't be bothered to specify, I can't be bothered to find, so I ...
      (comp.lang.pascal.misc)
    • Re: Rationale for CS0536?
      ... >> current thread to sleep since Sleep is a static method. ... > design or even naming problem, nothing that would have to be ... Weren't you just asking why the compiler didn't let you call static methods ...
      (microsoft.public.dotnet.languages.csharp)