From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Fri, 9 May 1997 08:41:22 -0500 From: G. David Butler gdb@dbSystems.com Subject: calling sleep() while holding lock() Topicbox-Message-UUID: 5ad7e418-eac8-11e9-9e20-41e7f4b1d025 Message-ID: <19970509134122.j6aDM3R3ungjMCe9YwmnHZRnPa-yNFhzchQZU4B6HU8@z> I wrote: >The boddles follow relative to /sys/src/9 with the original files >called file_name.cdrom (e.g. port/fault.c.cdrom) > >To make sure you get the whole thing, the last line says ThEeNd. >Remove it before you send it to rc -X. Well some mailer along the way doesn't like lines with a lone period :-) Take the following and do a 1,$s/^.// on it from ed and it will be usable David Butler gdb@dbSystems.com ##!/bin/rc ## ## command: /bin/boddle pc/clock.c.cdrom pc/clock.c ## srcdir: pc ## version: 863162201 ## date: Fri May 9 02:16:41 CDT 1997 ## #myname=$0 #doextract=no # #fn usage{ # echo $myname: usage: $myname '[-X] [src-directory]' >[1=2] # exit usage #} # #fn sigint{ # rm -rf 863162201 # exit interrupt #} # #while(~ $1 -*){ # switch($1){ # case -X # doextract=yes # case -* # usage # } # shift #} # #switch($#*){ #case 0 # srcdir=pc #case 1 # srcdir=$1 #case * # usage #} # #if(! ~ $doextract yes){ # echo This shell file contains a bundle of diffs representing changes # echo to original source files in the Plan 9 distribution. It will run # echo against the files in # echo ' ' $srcdir # echo '(unless overridden by the optional source directory argument)' # echo and create a directory 863162201 containing the updated files. # echo It will NOT automatically update the original files. # echo # echo Invoke with argument -X to perform the actual extraction. # exit 0 #} # #rm -rf 863162201 #mkdir 863162201 # #target=863162201/clock.c.cdrom #echo -n '863162201/clock.c.cdrom: ' #if(! test -f $srcdir/clock.c.cdrom || ! test -r $srcdir/clock.c.cdrom){ # echo $srcdir/clock.c.cdrom unreadable # exit unreadable #} #sum=`{sum < $srcdir/clock.c.cdrom} #if(! ~ a11baa684391 $sum(1)^$sum(2)){ # echo $srcdir/clock.c.cdrom is not the original distribution file # exit original #} #cp $srcdir/clock.c.cdrom 863162201/clock.c.cdrom #ed 863162201/clock.c.cdrom >/dev/null >[2=1] <<'//GO.SYSIN DD VADIM clock.c.cdrom' #66,70c # if(p->hasspin == 0 && anyready()){ # sched(); #. #62c # if(u && p && p->state == Running){ #. #wq #//GO.SYSIN DD VADIM clock.c.cdrom #sum=`{sum < 863162201/clock.c.cdrom} #if(~ b4c370264365 $sum(1)^$sum(2)) # echo #if not{ # echo 863162201/clock.c.cdrom checksum error creating updated file # exit checksum #} ##!/bin/rc ## ## command: /bin/boddle port/devbit.c.cdrom port/devbit.c ## srcdir: port ## version: 863162229 ## date: Fri May 9 02:17:09 CDT 1997 ## #myname=$0 #doextract=no # #fn usage{ # echo $myname: usage: $myname '[-X] [src-directory]' >[1=2] # exit usage #} # #fn sigint{ # rm -rf 863162229 # exit interrupt #} # #while(~ $1 -*){ # switch($1){ # case -X # doextract=yes # case -* # usage # } # shift #} # #switch($#*){ #case 0 # srcdir=port #case 1 # srcdir=$1 #case * # usage #} # #if(! ~ $doextract yes){ # echo This shell file contains a bundle of diffs representing changes # echo to original source files in the Plan 9 distribution. It will run # echo against the files in # echo ' ' $srcdir # echo '(unless overridden by the optional source directory argument)' # echo and create a directory 863162229 containing the updated files. # echo It will NOT automatically update the original files. # echo # echo Invoke with argument -X to perform the actual extraction. # exit 0 #} # #rm -rf 863162229 #mkdir 863162229 # #target=863162229/devbit.c.cdrom #echo -n '863162229/devbit.c.cdrom: ' #if(! test -f $srcdir/devbit.c.cdrom || ! test -r $srcdir/devbit.c.cdrom){ # echo $srcdir/devbit.c.cdrom unreadable # exit unreadable #} #sum=`{sum < $srcdir/devbit.c.cdrom} #if(! ~ d3657f7546179 $sum(1)^$sum(2)){ # echo $srcdir/devbit.c.cdrom is not the original distribution file # exit original #} #cp $srcdir/devbit.c.cdrom 863162229/devbit.c.cdrom #ed 863162229/devbit.c.cdrom >/dev/null >[2=1] <<'//GO.SYSIN DD VADIM devbit.c.cdrom' #432d #429a # free(b); #. #426a # b = smalloc(sizeof(GBitmap)); #. #wq #//GO.SYSIN DD VADIM devbit.c.cdrom #sum=`{sum < 863162229/devbit.c.cdrom} #if(~ 45a5486b46191 $sum(1)^$sum(2)) # echo #if not{ # echo 863162229/devbit.c.cdrom checksum error creating updated file # exit checksum #} ##!/bin/rc ## ## command: /bin/boddle port/fault.c.cdrom port/fault.c ## srcdir: port ## version: 863162247 ## date: Fri May 9 02:17:27 CDT 1997 ## #myname=$0 #doextract=no # #fn usage{ # echo $myname: usage: $myname '[-X] [src-directory]' >[1=2] # exit usage #} # #fn sigint{ # rm -rf 863162247 # exit interrupt #} # #while(~ $1 -*){ # switch($1){ # case -X # doextract=yes # case -* # usage # } # shift #} # #switch($#*){ #case 0 # srcdir=port #case 1 # srcdir=$1 #case * # usage #} # #if(! ~ $doextract yes){ # echo This shell file contains a bundle of diffs representing changes # echo to original source files in the Plan 9 distribution. It will run # echo against the files in # echo ' ' $srcdir # echo '(unless overridden by the optional source directory argument)' # echo and create a directory 863162247 containing the updated files. # echo It will NOT automatically update the original files. # echo # echo Invoke with argument -X to perform the actual extraction. # exit 0 #} # #rm -rf 863162247 #mkdir 863162247 # #target=863162247/fault.c.cdrom #echo -n '863162247/fault.c.cdrom: ' #if(! test -f $srcdir/fault.c.cdrom || ! test -r $srcdir/fault.c.cdrom){ # echo $srcdir/fault.c.cdrom unreadable # exit unreadable #} #sum=`{sum < $srcdir/fault.c.cdrom} #if(! ~ 2a5f95575928 $sum(1)^$sum(2)){ # echo $srcdir/fault.c.cdrom is not the original distribution file # exit original #} #cp $srcdir/fault.c.cdrom 863162247/fault.c.cdrom #ed 863162247/fault.c.cdrom >/dev/null >[2=1] <<'//GO.SYSIN DD VADIM fault.c.cdrom' #144c # if ((new = malloc(sizeof(Page))) == 0) # panic("malloc in fixfault"); #. #wq #//GO.SYSIN DD VADIM fault.c.cdrom #sum=`{sum < 863162247/fault.c.cdrom} #if(~ 9c3feeeb5972 $sum(1)^$sum(2)) # echo #if not{ # echo 863162247/fault.c.cdrom checksum error creating updated file # exit checksum #} ##!/bin/rc ## ## command: /bin/boddle port/proc.c.cdrom port/proc.c ## srcdir: port ## version: 863162273 ## date: Fri May 9 02:17:53 CDT 1997 ## #myname=$0 #doextract=no # #fn usage{ # echo $myname: usage: $myname '[-X] [src-directory]' >[1=2] # exit usage #} # #fn sigint{ # rm -rf 863162273 # exit interrupt #} # #while(~ $1 -*){ # switch($1){ # case -X # doextract=yes # case -* # usage # } # shift #} # #switch($#*){ #case 0 # srcdir=port #case 1 # srcdir=$1 #case * # usage #} # #if(! ~ $doextract yes){ # echo This shell file contains a bundle of diffs representing changes # echo to original source files in the Plan 9 distribution. It will run # echo against the files in # echo ' ' $srcdir # echo '(unless overridden by the optional source directory argument)' # echo and create a directory 863162273 containing the updated files. # echo It will NOT automatically update the original files. # echo # echo Invoke with argument -X to perform the actual extraction. # exit 0 #} # #rm -rf 863162273 #mkdir 863162273 # #target=863162273/proc.c.cdrom #echo -n '863162273/proc.c.cdrom: ' #if(! test -f $srcdir/proc.c.cdrom || ! test -r $srcdir/proc.c.cdrom){ # echo $srcdir/proc.c.cdrom unreadable # exit unreadable #} #sum=`{sum < $srcdir/proc.c.cdrom} #if(! ~ d4143c7915168 $sum(1)^$sum(2)){ # echo $srcdir/proc.c.cdrom is not the original distribution file # exit original #} #cp $srcdir/proc.c.cdrom 863162273/proc.c.cdrom #ed 863162273/proc.c.cdrom >/dev/null >[2=1] <<'//GO.SYSIN DD VADIM proc.c.cdrom' #693a # unlock(&p->exl); #. #691d #542a # unlock(&p->rlock); # splx(s); #. #527,541c # s = splhi(); # lock(&p->rlock); # r = p->r; # if(r){ # if(r->p != p || p->r != r || p->state != Wakeme) # panic("postnote: state"); # r->p = 0; # p->r = 0; # ready(p); #. #479c # # unlock(&p->rlock); #. #472c # if(p == 0) # return; # # s = splhi(); # lock(&p->rlock); # # if(r->p == p && p->r == r){ #. #469,470d #406c # unlock(&p->rlock); #. #403c # lock(&p->rlock); #. #396a # if (p->hasspin) # panic("hasspin %d %d\n", p->pid, p->hasspin); #. #386,387c # p->r = r; # unlock(&p->rlock); #. #381,384d #371,372c # r->p = 0; # unlock(&p->rlock); #. #364,365c # s = splhi(); # lock(&p->rlock); # if(r->p){ # print("double sleep %d %d\n", r->p->pid, p->pid); # dumpstack(); # } # r->p = p; #. #362d #352c #static void #. #322c # p->mp = m; #. #308a # p->hasspin = 0; #. #94a # p = u->p; # if (p->pid && p->hasspin) # panic("hasspin %d %d\n", p->pid, p->hasspin); #. #wq #//GO.SYSIN DD VADIM proc.c.cdrom #sum=`{sum < 863162273/proc.c.cdrom} #if(~ d8988e3715301 $sum(1)^$sum(2)) # echo #if not{ # echo 863162273/proc.c.cdrom checksum error creating updated file # exit checksum #} ##!/bin/rc ## ## command: /bin/boddle port/segment.c.cdrom port/segment.c ## srcdir: port ## version: 863162294 ## date: Fri May 9 02:18:14 CDT 1997 ## #myname=$0 #doextract=no # #fn usage{ # echo $myname: usage: $myname '[-X] [src-directory]' >[1=2] # exit usage #} # #fn sigint{ # rm -rf 863162294 # exit interrupt #} # #while(~ $1 -*){ # switch($1){ # case -X # doextract=yes # case -* # usage # } # shift #} # #switch($#*){ #case 0 # srcdir=port #case 1 # srcdir=$1 #case * # usage #} # #if(! ~ $doextract yes){ # echo This shell file contains a bundle of diffs representing changes # echo to original source files in the Plan 9 distribution. It will run # echo against the files in # echo ' ' $srcdir # echo '(unless overridden by the optional source directory argument)' # echo and create a directory 863162294 containing the updated files. # echo It will NOT automatically update the original files. # echo # echo Invoke with argument -X to perform the actual extraction. # exit 0 #} # #rm -rf 863162294 #mkdir 863162294 # #target=863162294/segment.c.cdrom #echo -n '863162294/segment.c.cdrom: ' #if(! test -f $srcdir/segment.c.cdrom || ! test -r $srcdir/segment.c.cdrom){ # echo $srcdir/segment.c.cdrom unreadable # exit unreadable #} #sum=`{sum < $srcdir/segment.c.cdrom} #if(! ~ 7c34b5a48705 $sum(1)^$sum(2)){ # echo $srcdir/segment.c.cdrom is not the original distribution file # exit original #} #cp $srcdir/segment.c.cdrom 863162294/segment.c.cdrom #ed 863162294/segment.c.cdrom >/dev/null >[2=1] <<'//GO.SYSIN DD VADIM segment.c.cdrom' #228c # sched(); #. #90a # unlock(s); #. #72,73d #67d #63c # lock(s); #. #wq #//GO.SYSIN DD VADIM segment.c.cdrom #sum=`{sum < 863162294/segment.c.cdrom} #if(~ 3203b05a8693 $sum(1)^$sum(2)) # echo #if not{ # echo 863162294/segment.c.cdrom checksum error creating updated file # exit checksum #} ##!/bin/rc ## ## command: /bin/boddle port/taslock.c.cdrom port/taslock.c ## srcdir: port ## version: 863162313 ## date: Fri May 9 02:18:33 CDT 1997 ## #myname=$0 #doextract=no # #fn usage{ # echo $myname: usage: $myname '[-X] [src-directory]' >[1=2] # exit usage #} # #fn sigint{ # rm -rf 863162313 # exit interrupt #} # #while(~ $1 -*){ # switch($1){ # case -X # doextract=yes # case -* # usage # } # shift #} # #switch($#*){ #case 0 # srcdir=port #case 1 # srcdir=$1 #case * # usage #} # #if(! ~ $doextract yes){ # echo This shell file contains a bundle of diffs representing changes # echo to original source files in the Plan 9 distribution. It will run # echo against the files in # echo ' ' $srcdir # echo '(unless overridden by the optional source directory argument)' # echo and create a directory 863162313 containing the updated files. # echo It will NOT automatically update the original files. # echo # echo Invoke with argument -X to perform the actual extraction. # exit 0 #} # #rm -rf 863162313 #mkdir 863162313 # #target=863162313/taslock.c.cdrom #echo -n '863162313/taslock.c.cdrom: ' #if(! test -f $srcdir/taslock.c.cdrom || ! test -r $srcdir/taslock.c.cdrom){ # echo $srcdir/taslock.c.cdrom unreadable # exit unreadable #} #sum=`{sum < $srcdir/taslock.c.cdrom} #if(! ~ 744969121109 $sum(1)^$sum(2)){ # echo $srcdir/taslock.c.cdrom is not the original distribution file # exit original #} #cp $srcdir/taslock.c.cdrom 863162313/taslock.c.cdrom #ed 863162313/taslock.c.cdrom >/dev/null >[2=1] <<'//GO.SYSIN DD VADIM taslock.c.cdrom' #76a # if(u && u->p) # (u->p->hasspin)--; #. #68,69d #65a # if(u && u->p) # (u->p->hasspin)--; #. #59c # (u->p->hasspin)++; #. #48,49c # panic("lock loop 0x%lux pc 0x%lux held by pc 0x%lux\n", # l, pc, l->pc); #. #42a # if(u && u->p) # (u->p->hasspin)++; #. #25,26c # panic("lock loop 0x%lux pc 0x%lux held by pc 0x%lux\n", # l, pc, l->pc); #. #20a # if(u && u->p) # (u->p->hasspin)++; #. #18,19d #wq #//GO.SYSIN DD VADIM taslock.c.cdrom #sum=`{sum < 863162313/taslock.c.cdrom} #if(~ f7c98ba41155 $sum(1)^$sum(2)) # echo #if not{ # echo 863162313/taslock.c.cdrom checksum error creating updated file # exit checksum #} ThEeNd