From owner-freebsd-threads@FreeBSD.ORG Thu Jul 29 23:06:41 2004 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 032FD16A4CE; Thu, 29 Jul 2004 23:06:41 +0000 (GMT) Received: from mail.vicor-nb.com (bigwoop.vicor-nb.com [208.206.78.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id 58EF143D64; Thu, 29 Jul 2004 23:06:36 +0000 (GMT) (envelope-from julian@elischer.org) Received: from elischer.org (julian.vicor-nb.com [208.206.78.97]) by mail.vicor-nb.com (Postfix) with ESMTP id DCFB27A48C; Thu, 29 Jul 2004 16:06:35 -0700 (PDT) Message-ID: <410982FB.5060306@elischer.org> Date: Thu, 29 Jul 2004 16:06:35 -0700 From: Julian Elischer User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.3.1) Gecko/20030516 X-Accept-Language: en, hu MIME-Version: 1.0 To: threads@freebsd.org, John Baldwin Content-Type: multipart/mixed; boundary="------------080906010605000700090807" X-Content-Filtered-By: Mailman/MimeDel 2.1.1 Subject: thread state diagram X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Jul 2004 23:06:41 -0000 This is a multi-part message in MIME format. --------------080906010605000700090807 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Here is a .png image of a diagram of thread states (as they will be after my next commits) and the source for the picture (using tgif) any comments or corrections? the next commits will make very small differences only, mostly in exiting. --------------080906010605000700090807 Content-Type: text/plain; name="thread-state.obj" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="thread-state.obj" %TGIF 4.1.42-QPL state(1,37,100.000,0,0,0,16,1,9,1,1,0,0,1,0,1,0,'Courier',0,80640,0,0,0,10,0,0,1,0,0,16,0,0,1,1,1,1,1408,1088,1,0,2880,0). % % @(#)$Header$ % %W% % unit("1 pixel/pixel"). color_info(11,65535,0,[ "magenta", 65535, 0, 65535, 65535, 0, 65535, 1, "red", 65535, 0, 0, 65535, 0, 0, 1, "green", 0, 65535, 0, 0, 65535, 0, 1, "blue", 0, 0, 65535, 0, 0, 65535, 1, "yellow", 65535, 65535, 0, 65535, 65535, 0, 1, "pink", 65535, 48830, 52942, 65535, 49344, 52171, 1, "cyan", 0, 65535, 65535, 0, 65535, 65535, 1, "CadetBlue", 25443, 40606, 40092, 24415, 40606, 41120, 1, "white", 65535, 65535, 65535, 65535, 65535, 65535, 1, "black", 0, 0, 0, 0, 0, 0, 1, "DarkSlateGray", 12593, 19789, 21074, 12079, 20303, 20303, 1 ]). script_frac("0.6"). fg_bg_colors('black','white'). dont_reencode("FFDingbests:ZapfDingbats"). page(1,"",1,''). group([ box('blue','',96,64,160,128,0,1,1,0,0,0,0,0,0,'1',0,[ ]), text('black',112,83,2,0,1,42,36,1,13,5,0,0,0,0,2,42,36,0,1,"",0,0,0,0,96,'',[ minilines(42,36,0,1,0,0,0,[ mini_line(28,13,5,0,1,0,[ str_block(0,28,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,28,13,5,0,1,0,0,0,0,0, "free")]) ]), mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "memory")]) ]) ])]) ], 5,0,0,[ ]). group([ box('blue','',192,64,272,128,0,1,1,6,0,0,0,0,0,'1',0,[ ]), text('black',192,67,2,0,1,70,36,7,13,5,0,0,0,0,2,70,36,0,1,"",0,0,0,0,80,'',[ minilines(70,36,0,1,0,0,0,[ mini_line(70,13,5,0,1,0,[ str_block(0,70,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,70,13,5,0,1,0,0,0,0,0, " thread in")]) ]), mini_line(70,13,5,0,1,0,[ str_block(0,70,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,70,13,5,0,1,0,0,0,0,0, " UMA cache")]) ]) ])]) ], 15,0,0,[ ]). group([ box('blue','',304,64,384,128,0,1,1,23,0,0,0,0,0,'1',0,[ ]), text('black',304,67,3,0,1,70,54,22,13,5,0,0,0,0,2,70,54,0,1,"",0,0,0,0,80,'',[ minilines(70,54,0,1,0,0,0,[ mini_line(49,13,5,0,0,0,[ str_block(0,49,13,5,0,-6,0,0,0,[ str_seg('blue','Courier',0,80640,49,13,5,0,-6,0,0,0,0,0, "thread ")]) ]), mini_line(70,13,5,0,1,0,[ str_block(0,70,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,70,13,5,0,1,0,0,0,0,0, "on proc in")]) ]), mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "UMA cache")]) ]) ])]) ], 21,0,0,[ ]). group([ box('blue','',425,64,505,128,0,1,1,26,0,0,0,0,0,'1',0,[ ]), text('black',425,67,2,0,1,63,36,25,13,5,0,0,0,0,2,63,36,0,1,"",0,0,0,0,80,'',[ minilines(63,36,0,1,0,0,0,[ mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "thread on")]) ]), mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "live proc")]) ]) ])]) ], 24,0,0,[ ]). group([ box('blue','',528,64,608,128,0,1,1,29,0,0,0,0,0,'1',0,[ ]), text('black',528,67,3,0,1,56,54,28,13,5,0,0,0,0,2,56,54,0,1,"",0,0,0,0,80,'',[ minilines(56,54,0,1,0,0,0,[ mini_line(49,13,5,0,0,0,[ str_block(0,49,13,5,0,-6,0,0,0,[ str_seg('blue','Courier',0,80640,49,13,5,0,-6,0,0,0,0,0, "thread ")]) ]), mini_line(56,13,5,0,1,0,[ str_block(0,56,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,56,13,5,0,1,0,0,0,0,0, "runnable")]) ]), mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "single")]) ]) ])]) ], 27,0,0,[ ]). group([ box('blue','',640,64,720,128,0,1,1,32,0,0,0,0,0,'1',0,[ ]), text('black',640,67,3,0,1,49,54,31,13,5,0,0,0,0,2,49,54,0,1,"",0,0,0,0,80,'',[ minilines(49,54,0,1,0,0,0,[ mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "thread")]) ]), mini_line(49,13,5,0,1,0,[ str_block(0,49,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,49,13,5,0,1,0,0,0,0,0, "running")]) ]), mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "single")]) ]) ])]) ], 30,0,0,[ ]). group([ box('blue','',752,64,832,128,0,1,1,35,0,0,0,0,0,'1',0,[ ]), text('black',752,67,3,0,1,63,54,34,13,5,0,0,0,0,2,63,54,0,1,"",0,0,0,0,80,'',[ minilines(63,54,0,1,0,0,0,[ mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "thread")]) ]), mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "inhibited")]) ]), mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "single")]) ]) ])]) ], 33,0,0,[ ]). group([ box('red','',512,224,592,288,0,1,1,38,0,0,0,0,0,'1',0,[ ]), text('black',512,227,2,0,1,49,36,37,13,5,0,0,0,0,2,49,36,0,1,"",0,0,0,0,240,'',[ minilines(49,36,0,1,0,0,0,[ mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "thread")]) ]), mini_line(49,13,5,0,1,0,[ str_block(0,49,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,49,13,5,0,1,0,0,0,0,0, "exiting")]) ]) ])]) ], 36,0,0,[ ]). group([ box('red','',400,224,480,288,0,1,1,41,0,0,0,0,0,'1',0,[ ]), text('black',400,227,3,0,1,70,54,40,13,5,0,0,0,0,2,70,54,0,1,"",0,0,0,0,240,'',[ minilines(70,54,0,1,0,0,0,[ mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "thread on")]) ]), mini_line(35,13,5,0,0,0,[ str_block(0,35,13,5,0,-6,0,0,0,[ str_seg('red','Courier',0,80640,35,13,5,0,-6,0,0,0,0,0, "PCPU ")]) ]), mini_line(70,13,5,0,1,0,[ str_block(0,70,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,70,13,5,0,1,0,0,0,0,0, "deadthread")]) ]) ])]) ], 39,0,0,[ ]). group([ box('red','',288,224,368,288,0,1,1,44,0,0,0,0,0,'1',0,[ ]), text('black',288,227,3,0,1,70,54,43,13,5,0,0,0,0,2,70,54,0,1,"",0,0,0,0,240,'',[ minilines(70,54,0,1,0,0,0,[ mini_line(70,13,5,0,1,0,[ str_block(0,70,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,70,13,5,0,1,0,0,0,0,0, " thread in")]) ]), mini_line(56,13,5,0,1,0,[ str_block(0,56,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,56,13,5,0,1,0,0,0,0,0, " reap GC")]) ]), mini_line(28,13,5,0,0,0,[ str_block(0,28,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,28,13,5,0,0,0,0,0,0,0, "List")]) ]) ])]) ], 42,0,0,[ ]). group([ box('red','',512,352,592,416,0,1,1,79,0,0,0,0,0,'1',0,[ ]), text('black',512,355,3,0,1,63,54,80,13,5,0,0,0,0,2,63,54,0,1,"",0,0,0,0,368,'',[ minilines(63,54,0,1,0,0,0,[ mini_line(49,13,5,0,0,0,[ str_block(0,49,13,5,0,-6,0,0,0,[ str_seg('red','Courier',0,80640,49,13,5,0,-6,0,0,0,0,0, "thread ")]) ]), mini_line(63,13,5,0,0,0,[ str_block(0,63,13,5,0,-1,0,0,0,[ str_seg('red','Courier',0,80640,63,13,5,0,-1,0,0,0,0,0, "runnable,")]) ]), mini_line(35,13,5,0,1,0,[ str_block(0,35,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,35,13,5,0,1,0,0,0,0,0, "multi")]) ]) ])]) ], 78,0,0,[ ]). group([ box('red','',624,352,704,416,0,1,1,82,0,0,0,0,0,'1',0,[ ]), text('black',624,355,3,0,1,49,54,83,13,5,0,0,0,0,2,49,54,0,1,"",0,0,0,0,368,'',[ minilines(49,54,0,1,0,0,0,[ mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "thread")]) ]), mini_line(49,13,5,0,1,0,[ str_block(0,49,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,49,13,5,0,1,0,0,0,0,0, "running")]) ]), mini_line(35,13,5,0,1,0,[ str_block(0,35,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,35,13,5,0,1,0,0,0,0,0, "multi")]) ]) ])]) ], 81,0,0,[ ]). group([ box('red','',752,352,832,416,0,1,1,85,0,0,0,0,0,'1',0,[ ]), text('black',752,355,3,0,1,63,54,86,13,5,0,0,0,0,2,63,54,0,1,"",0,0,0,0,368,'',[ minilines(63,54,0,1,0,0,0,[ mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "thread")]) ]), mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "inhibited")]) ]), mini_line(35,13,5,0,1,0,[ str_block(0,35,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,35,13,5,0,1,0,0,0,0,0, "multi")]) ]) ])]) ], 84,0,0,[ ]). poly('red','',3,[ 288,256,256,256,256,128],1,1,1,117,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 160,96,192,96],1,1,1,118,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 272,96,304,96],1,1,1,120,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 496,96,528,96],1,1,1,122,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 608,96,640,96],1,1,1,123,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 720,96,752,96],1,1,1,125,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',2,[ 672,128,672,352],1,1,1,129,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',2,[ 704,384,752,384],1,1,1,131,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',2,[ 688,352,688,128],1,1,1,168,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). group([ box('blue','',496,144,576,208,0,1,1,170,0,0,0,0,0,'1',0,[ ]), text('black',496,147,3,0,1,63,54,171,13,5,0,0,0,0,2,63,54,0,1,"",0,0,0,0,160,'',[ minilines(63,54,0,1,0,0,0,[ mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "thread on")]) ]), mini_line(49,13,5,0,1,0,[ str_block(0,49,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,49,13,5,0,1,0,0,0,0,0, "exiting")]) ]), mini_line(28,13,5,0,1,0,[ str_block(0,28,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,28,13,5,0,1,0,0,0,0,0, "proc")]) ]) ])]) ], 169,0,0,[ ]). group([ box('blue','',384,144,464,208,0,1,1,173,0,0,0,0,0,'1',0,[ ]), text('black',384,147,3,0,1,63,54,174,13,5,0,0,0,0,2,63,54,0,1,"",0,0,0,0,160,'',[ minilines(63,54,0,1,0,0,0,[ mini_line(63,13,5,0,1,0,[ str_block(0,63,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,63,13,5,0,1,0,0,0,0,0, "thread on")]) ]), mini_line(42,13,5,0,1,0,[ str_block(0,42,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,42,13,5,0,1,0,0,0,0,0, "zombie")]) ]), mini_line(28,13,5,0,1,0,[ str_block(0,28,13,5,0,1,0,0,0,[ str_seg('blue','Courier',0,80640,28,13,5,0,1,0,0,0,0,0, "proc")]) ]) ])]) ], 172,0,0,[ ]). poly('blue','',2,[ 496,176,464,176],1,1,1,175,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). group([ box('red','',288,352,368,416,0,1,1,188,0,0,0,0,0,'1',0,[ ]), text('black',288,355,3,0,1,49,54,189,13,5,0,0,0,0,2,49,54,0,1,"",0,0,0,0,368,'',[ minilines(49,54,0,1,0,0,0,[ mini_line(35,13,5,0,1,0,[ str_block(0,35,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,35,13,5,0,1,0,0,0,0,0, "spare")]) ]), mini_line(21,13,5,0,0,0,[ str_block(0,21,13,5,0,-6,0,0,0,[ str_seg('red','Courier',0,80640,21,13,5,0,-6,0,0,0,0,0, "on ")]) ]), mini_line(49,13,5,0,1,0,[ str_block(0,49,13,5,0,1,0,0,0,[ str_seg('red','Courier',0,80640,49,13,5,0,1,0,0,0,0,0, "sibling")]) ]) ])]) ], 187,0,0,[ ]). poly('red','',2,[ 368,384,512,384],1,1,1,198,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 192,112,160,112],1,1,1,212,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 384,96,432,96],1,1,1,217,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',3,[ 208,128,208,384,288,384],1,1,1,227,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',2,[ 592,384,624,384],1,1,1,286,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',3,[ 288,368,224,368,224,128],1,1,1,304,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',6,[ 832,96,848,96,848,48,512,48,512,80,528,80],1,1,1,339,0,0,0,0,0,0,0,'1',0,0, "00","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',6,[ 832,384,864,384,864,432,480,432,480,400,512,400],1,1,1,340,0,0,0,0,0,0,0,'1',0,0, "00","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',2,[ 512,256,480,256],1,1,1,345,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',2,[ 400,256,368,256],1,1,1,346,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('red','',3,[ 640,352,640,256,592,256],1,1,1,375,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',3,[ 656,128,656,176,576,176],1,1,1,377,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',3,[ 384,176,336,176,336,128],1,1,1,378,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('blue','',2,[ 304,112,272,112],1,1,1,1318,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('blue',176,83,1,0,1,7,18,1340,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,96,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "1")]) ]) ])]). text('blue',288,83,1,0,1,7,18,1342,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,96,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "2")]) ]) ])]). text('blue',176,99,1,0,1,7,18,1344,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,112,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "3")]) ]) ])]). text('blue',288,99,1,0,1,7,18,1346,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,112,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "4")]) ]) ])]). text('blue',400,83,1,0,1,7,18,1348,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,96,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "5")]) ]) ])]). text('blue',512,83,1,0,1,7,18,1350,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,96,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "6")]) ]) ])]). text('blue',560,35,1,0,1,7,18,1352,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,48,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,-1,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,-1,0,0,0,0,0, "7")]) ]) ])]). text('blue',624,83,1,0,1,7,18,1354,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,96,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "8")]) ]) ])]). text('blue',736,83,1,0,1,7,18,1356,13,5,0,0,0,0,2,7,18,0,0,"",0,0,0,0,96,'',[ minilines(7,18,0,0,0,0,0,[ mini_line(7,13,5,0,0,0,[ str_block(0,7,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,7,13,5,0,0,0,0,0,0,0, "9")]) ]) ])]). text('blue',608,163,1,0,1,14,18,1358,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,176,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "10")]) ]) ])]). text('blue',480,163,1,0,1,14,18,1360,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,176,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "11")]) ]) ])]). text('red',656,195,1,0,1,14,18,1366,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,208,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "12")]) ]) ])]). text('red',688,195,1,0,1,14,18,1370,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,208,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "13")]) ]) ])]). text('red',720,371,1,0,1,14,18,1372,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,384,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "14")]) ]) ])]). text('red',720,419,1,0,1,14,18,1374,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,432,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "15")]) ]) ])]). text('red',624,291,1,0,1,14,18,1378,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,304,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,-1,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,-1,0,0,0,0,0, "17")]) ]) ])]). text('red',496,243,1,0,1,14,18,1380,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,256,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "18")]) ]) ])]). text('red',384,243,1,0,1,14,18,1382,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,256,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "19")]) ]) ])]). text('red',272,243,1,0,1,14,18,1384,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,256,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "20")]) ]) ])]). text('red',400,387,1,0,1,14,18,1388,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,400,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "22")]) ]) ])]). text('red',224,371,1,0,1,14,18,1390,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,384,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "23")]) ]) ])]). text('red',240,355,1,0,1,14,18,1392,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,368,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "24")]) ]) ])]). text('red',592,371,1,0,1,14,18,1405,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,384,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('red','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "16")]) ]) ])]). text('blue',128,505,1,0,1,449,28,1407,23,5,0,0,0,0,2,449,28,0,0,"",0,0,0,0,528,'',[ minilines(449,28,0,0,0,0,0,[ mini_line(449,23,5,0,0,0,[ str_block(0,449,23,5,0,-2,0,0,0,[ str_seg('blue','NewCenturySchlbk-Roman',0,144000,449,23,5,0,-2,0,0,0,0,0, "BLUE - Normal nonthreaded operation.")]) ]) ])]). text('blue',128,537,1,0,1,464,28,1409,23,5,0,0,0,0,2,464,28,0,0,"",0,0,0,0,560,'',[ minilines(464,28,0,0,0,0,0,[ mini_line(464,23,5,0,0,0,[ str_block(0,464,23,5,0,-1,0,0,0,[ str_seg('red','NewCenturySchlbk-Roman',0,138240,464,23,5,0,-1,0,0,0,0,0, "RED - Threaded operation, (KSE+THR)")]) ]) ])]). text('blue',128,579,16,0,1,483,288,1417,13,5,0,0,0,0,2,483,288,0,1,"",0,0,0,0,592,'',[ minilines(483,288,0,1,0,0,0,[ mini_line(154,13,5,0,0,0,[ str_block(0,154,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,154,13,5,0,-1,0,0,0,0,0, "1 - thread_init()")]) ]), mini_line(154,13,5,0,0,0,[ str_block(0,154,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,154,13,5,0,-1,0,0,0,0,0, "2,23 - thread_ctor()")]) ]), mini_line(154,13,5,0,0,0,[ str_block(0,154,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,154,13,5,0,-1,0,0,0,0,0, "3 - thread_fini()")]) ]), mini_line(161,13,5,0,0,0,[ str_block(0,161,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,161,13,5,0,-1,0,0,0,0,0, "4,24,20 - thread_dtor()")]) ]), mini_line(308,13,5,0,0,0,[ str_block(0,308,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,308,13,5,0,-1,0,0,0,0,0, "5 - fork1 via proc_alloc(), proc_ctor()")]) ]), mini_line(273,13,5,0,0,0,[ str_block(0,273,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,273,13,5,0,-1,0,0,0,0,0, "6,7,15,22 - setrunnable()/setrunqueue()")]) ]), mini_line(273,13,5,0,0,0,[ str_block(0,273,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,273,13,5,0,-1,0,0,0,0,0, "8,16 - choosethread() via mi_switch()")]) ]), mini_line(483,13,5,0,0,0,[ str_block(0,483,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,483,13,5,0,-1,0,0,0,0,0, "9,14 - various- msleep/mutex, etc. via mi_switch() via cpu_switch()")]) ]), mini_line(112,13,5,0,0,0,[ str_block(0,112,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,112,13,5,0,-1,0,0,0,0,0, "10,11 - exit1()")]) ]), mini_line(245,13,5,0,0,0,[ str_block(0,245,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,245,13,5,0,-1,0,0,0,0,0, "12 - thr_create(), kse_create()")]) ]), mini_line(392,13,5,0,0,0,[ str_block(0,392,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,392,13,5,0,-1,0,0,0,0,0, "13 - (thr_exit(), kse_exit()) kern_execve(), exit1()")]) ]), mini_line(371,13,5,0,0,0,[ str_block(0,371,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,371,13,5,0,-1,0,0,0,0,0, "17 - thread_exit(), from thr_exit() or kse_exit()")]) ]), mini_line(287,13,5,0,0,0,[ str_block(0,287,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,287,13,5,0,-1,0,0,0,0,0, "18 - thread_exit() before cpu_throw()")]) ]), mini_line(364,13,5,0,1,0,[ str_block(0,364,13,5,0,1,0,0,0,[ str_seg('black','Courier',0,80640,364,13,5,0,1,0,0,0,0,0, "19 - mi_switch via thread_stash() after switchin")]) ]), mini_line(343,13,5,0,0,0,[ str_block(0,343,13,5,0,-1,0,0,0,[ str_seg('black','Courier',0,80640,343,13,5,0,-1,0,0,0,0,0, "21 - kern_wait() via proc_free(), proc_dtor()")]) ]), mini_line(0,13,5,0,0,0,[ str_block(0,0,13,5,0,0,0,0,0,[ str_seg('black','Courier',0,80640,0,13,5,0,0,0,0,0,0,0, "")]) ]) ])]). text('blue',336,147,1,0,1,14,18,1429,13,5,0,0,0,0,2,14,18,0,0,"",0,0,0,0,160,'',[ minilines(14,18,0,0,0,0,0,[ mini_line(14,13,5,0,0,0,[ str_block(0,14,13,5,0,0,0,0,0,[ str_seg('blue','Courier',0,80640,14,13,5,0,0,0,0,0,0,0, "21")]) ]) ])]). --------------080906010605000700090807--