On Mon, Sep 14, 2009 at 7:00 PM, Pei Lin <[email protected]> wrote:

> 2009/9/14 Leonidas . <[email protected]>:
> >
> >
> > On Mon, Sep 14, 2009 at 4:01 PM, Leonidas . <[email protected]>
> wrote:
> >>
> >>
> >> On Mon, Sep 14, 2009 at 3:32 PM, Leonidas . <[email protected]>
> wrote:
> >>>
> >>>
> >>> On Mon, Sep 14, 2009 at 3:28 PM, Leonidas . <[email protected]>
> >>> wrote:
> >>>>
> >>>>
> >>>> On Mon, Sep 14, 2009 at 2:46 PM, karunakar rao
> >>>> <[email protected]> wrote:
> >>>>>
> >>>>> hi leo
> >>>>> maintain circular buffer in module, so that if user doesn't access
> for
> >>>>> days its going to be automatically discarded.I think printk also use
> same
> >>>>> kind of mechanism which dumps data into cirbuffer.
> >>>>>
> >>>>> thanks,
> >>>>> karuna.
> >>>>>
> >>>>> On Mon, Sep 14, 2009 at 2:41 PM, Leonidas . <[email protected]>
> >>>>> wrote:
> >>>>>>
> >>>>>>
> >>>>>> On Mon, Sep 14, 2009 at 2:30 PM, karunakar rao
> >>>>>> <[email protected]> wrote:
> >>>>>>>
> >>>>>>> hi leo
> >>>>>>> you can maintain buffer in your module to log errors.When user
> tries
> >>>>>>> to access /proc you can print all those from your buffer.
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> karuna.
> >>>>>>>
> >>>>>>> On Mon, Sep 14, 2009 at 1:22 PM, Leonidas . <[email protected]
> >
> >>>>>>> wrote:
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> Hi List
> >>>>>>>>
> >>>>>>>> I have written a kernel module which implements a char device. An
> >>>>>>>> userspace app
> >>>>>>>> is supposed to get data from my module and then dump it into a
> file
> >>>>>>>> for further processing.
> >>>>>>>>
> >>>>>>>> The kind of data which kernel module is going to pass to userspace
> >>>>>>>> is going to be a 4K buffer,
> >>>>>>>> and the data traffic is not going to be really heavy, meaning may
> be
> >>>>>>>> a 4K buffer every 1 min or so.
> >>>>>>>> I am not very sure though, but certainly not heavy traffic the way
> >>>>>>>> they describe for network traffic etc.
> >>>>>>>>
> >>>>>>>> And this data needs to be logged to a file either from kernel or
> >>>>>>>> userspace and an userspace all will work
> >>>>>>>> on that data. This data needs to be logged as soon as it arrives
> >>>>>>>> meaning, I might not be able to write it to
> >>>>>>>> /proc since from module I can update /proc only when user actually
> >>>>>>>> accesses it. This data needs to be
> >>>>>>>> static in nature, meaning I get one error and I write it to a file
> >>>>>>>> somehow and user can see it anytime.
> >>>>>>>>
> >>>>>>>> I hope I have described the situation clearly. I have explored
> some
> >>>>>>>> mechanism like ioctls, mmaping the
> >>>>>>>> kernel buffer etc but all these would require the user module to
> >>>>>>>> poll or notified somehow by kernel that
> >>>>>>>> the data is available. I dont want the user module to poll.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> -Leo.
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>> Pei Lin,
> >>>>>>
> >>>>>> I am not limiting my solution by using a law or what someone says.
> But
> >>>>>> I think it is very important to
> >>>>>> follow the spirit of environment/OS/arch you are working on and come
> >>>>>> up with the best possible solution.
>
> hi , i didn't receive these messages. (^-^)
> yeah,u can choose the way u wanna go,no matter a wide road or some
> private alleys.
> which one is convenient for different guys.
>
> >>>>>> As you correctly mention we can hack around and achieve the same
> >>>>>> functionality but I would rather do these
> >>>>>> kind of experiments for fun or to show my friends that the kernel
> can
> >>>>>> be hacked these ways, but certainly not
> >>>>>> in a system which is supposed to be a production system. I
> appreciate
> >>>>>> your thoughts and I am sure many times
> >>>>>> one stumbles upon real cool things which change course of nature and
> >>>>>> are reasons for radical changes in
> >>>>>> various subsystems. But I think this is not one of them, this has
> been
> >>>>>> discussed over and over again and there
> >>>>>> are standard interfaces defined. My questions is more about the
> design
> >>>>>> part not about how I can hack and get
> >>>>>> the stuff done.
>
> yeah,i agree. If it is a commercial software, it need a pretty and
> clean interface to support future updating and maintenance.
>
> >>>>>>
> >>>>>> Karuna,
> >>>>>> I had thought about this solution i.e. maintain a buffer in module
> and
> >>>>>> dump it whenever user wants, only
> >>>>>> issue is my module will keep consuming memory here. I msg buffers
> can
> >>>>>> be freed once logged but how about
> >>>>>> a case where user does not request for few days? The amount of
> memory
> >>>>>> my module is going to consume will be
> >>>>>> unacceptable.
> >>>>>>
> >>>>>> -Leo
> >>>>>
> >>>>
> >>>> Sorry I did not mention it earlier, I can not discard any error
> message
> >>>> logged, meaning these are error messages
> >>>> and might crash my system after a long time. I need to to be able to
> see
> >>>> all these messages till I restart my module.
> >>>>
> >>>> _Leo.
> >>>
> >>>
> >>> Basically, I am quite tight on memory and I would like to convery error
> >>> messages to user as soon as any
> >>> error condition is hit. So my module cant keep even 10 error msg which
> >>> will eat up 10 pages.
> >>>
> >>> _Leo
> >>>
> >>>
> >>
> >> Looks like some of the replys didn't get delivered to the list. Please
> >> refer the thread for someof the interactions.
> >>
> >> Isn't debugfs the right thing to use here? Anyone? Please enlighten.
> >>
> >> _Leo
> >>
> >
> >
> > After some analysis, I have decided to use netlink sockets for my use
> case.
> > Some queries regarding the same:
> >
> > 1. Are netlink sockets an overkill for not so heavy data transfer ?
> > 2. Do I have to recompile kernel etc for loading my module which usages
> > netlink sockets?
> > 3. Are they widely available everywhere? Meaning 2.4 and 2.6 kernles as
> > well?
> > 4. Any idea whether these are available on BSD kernel as well? I think
> they
> > are.
> >
>
> i think use sockets like using a big hammer knock to small
> nail...using signal to announce make more sense in my opinion.
>
> >
> > _Leo
> >
> >
> >
>

True, netlink is good but may be not in my case, I am getting in a subset of
networking subsytem
to my job which can be done in a more light weight manner using mmap +
signals. I guess i am going
with mmap + signal approach.

Thanks all for the inputs.

-Leo.

Reply via email to