On Tue, Sep 15, 2009 at 2:23 AM, raz ben yehuda <[email protected]> wrote:
> i would i have used netconsole. > > On Tue, 2009-09-15 at 11:45 +0530, Leonidas . wrote: > > > > > > 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. > > Yes, netconsole sounds like a cool thing. I might actaully need to use it one day. Thanks for the input. -Leo.
