From: S V. <vam...@in...> - 2002-02-27 14:25:32
|
Hi, Not taking the write_lock while resetting the variables is a bug. We will fix that. We have designed/implemented the getvars command such that when the variables are being reset, we don't return their previous contents. There really is no reason not to return their previous values, though. It looks like one would expect the application to return the present values and then reset them in one atomic operation. If it seems more natural we could do it that way. It is not hard at all, there is no issue with kmalloc either, we handle that already. We will include it in 3.4. Regards.. Vamsi. Vamsi Krishna S. Linux Technology Center, IBM Software Lab, Bangalore. Ph: +91 80 5044959 Internet: vam...@in... david oleszkiewicz <da...@us...> To: Dprobes Mailing List <dp...@ww...> Sent by: cc: dprobes-admin@www-1 Subject: [Dprobes] dprobes --getvars --reset 24.ibm.com 02/27/02 03:05 AM So I expected using --getvars and --reset together would have allowed me to get the value of a variable and reset it in one operation. This would, of course, be in such a manner that I could not lose any data. For example, if I was using dprobes to do some sort of statistics gathering, I would like to be able to reset any set of variables with the assurance that I do not lose any data. I can then be smart about grouping variables under 'name=' clauses and giving them contiguous numbers so that i can easily zero and read them in one "atomic" operation. A briefly looked at the code and it would seem like there is no great obstacle to implementing this feature. looking in dp_get_globalvars() we have if (cmd & DP_GETVARS_RESET) { memset(dp_gv + req->from, 0, num_vars*sizeof(unsigned long)); read_unlock_irqrestore(&dp_gv_lock, eflags); goto done; } I imagine you don't get a write lock since you are not concerned about multiple user processes reseting variables; that's the user's problem (or more specifically only root). and the write lock obtained in the interrupt code will ensure that no variable will be changed while any of the variables are being reset...so resetting the group is already atomic for us, right? if we wanted to allow my described operation we would need to get a write lock when we wanted to reset the vars and read them with the same lock held. This does make sense, since we are writing to the variables after all...so the code wouldn't look too funny. I guess the only issue is where to place the kmalloc since we don't want to do that with lock held. does such operation make sense, or is there some theoretical reasoning behind not allowing this. dave -- _______________________________________________ Dprobes mailing list Dp...@ww... http://www-124.ibm.com/developerworks/oss/mailman/listinfo/dprobes |