Frank Hofmann wrote: > On Wed, 21 Feb 2007, Brian Utterback wrote: > >> Because of the design of streams, it is sometimes the case that one >> would like to increase the stream head queue size. Streams modules >> can do this, but there is no way to do it outside the stream, except >> by increasing the default value. >> >> The defaults are controlled by a struct called "strm_info". If I print >> this out I get: >> >>> strm_info::print >> { >> mi_idnum = 0 >> mi_idname = 0x18640f0 "strrhead" >> mi_minpsz = 0 >> mi_maxpsz = 0xffffffffffffffff >> mi_hiwat = 0x1400 >> mi_lowat = 0x400 >> } >>> >> >> The time honored incantation that services uses to set this for >> customers is: >> >> echo strm_info+0x2c/W 3e030 | /usr/bin/mdb -kw /dev/ksyms >> >> This bothers me for several reasons. First, the use of the constant >> offset 0x2c. Second, that the location specified by strm_info+0x2c >> is the lower half of the mi_lowat member, which I think will be >> a problem on x86. >> >> However, I can't seem to find a way to specify symbolically the >> mi_lowat location for writing. It didn't work to specify >> strm_info.mi_lowat as the address. Is there something I'm missing? > > Well, using: > >> strm_info::print -a mi_lowat > fffffffffbc76360 mi_lowat = 0x400 > > you get the address. It is possible to shellscript this into an > automatism; but I don't know if it's possible with one mdb pipe. > Extracting just the address from above works via e.g.: > >> ::eval 'strm_info::print -a mi_lowat ! cut -d" " -f1' > fffffffffbc76360 > > but mdb doesn't accept a pipe '|' after ::eval anymore, I.e. what > would've been obvious for me to try: > >> ::eval 'strm_info::print -a mi_lowat ! cut -d" " -f1' | /W 3e030 > > doesn't work, anything after the last '|' on this line is just ignored.
strm_info::print -a mi_lowat | /W 0x401 Seems to work. -- Rich