From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: References: Date: Sat, 5 Sep 2015 20:42:41 +0200 Message-ID: From: Giacomo Tesio To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: multipart/alternative; boundary=001a1130d3969b48a8051f0461d1 Subject: Re: [9fans] Privalloc(2) and rfork(RFPROC|RFMEM) (was: a pair nec bugs) Topicbox-Message-UUID: 69002c9c-ead9-11e9-9d60-3106f5b1d025 --001a1130d3969b48a8051f0461d1 Content-Type: text/plain; charset=UTF-8 Nice example thanks. May be my problem is that p is global in my case? Giacomo Il 05/Set/2015 18:50, "erik quanstrom" ha scritto: > by the way, the following program runs without asserting for me > with or without the waits. > > - erik > > --- > > #include > #include > > void > task(void **p) > { > assert(*p == nil); > *p = (void*)(uintptr)getpid(); > } > > void > spawn(void (*t)(void**), void **p) > { > int pid; > > switch(pid = rfork(RFMEM|RFPROC)){ > case -1: > sysfatal("spawn: rfork: %r"); > case 0: > t(p); > exits(""); > default: > USED(pid); > return; > } > } > > void > main(void) > { > int i, k; > void **p; > Waitmsg *w; > > p = privalloc(); > k = 0; > for(i = 0; i < 1024; i++){ > spawn(task, p); > for(k++; k > 16; k--){ > if((w = wait()) == nil) > break; > free(w); > } > } > exits(""); > } > > --001a1130d3969b48a8051f0461d1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PHAgZGlyPSJsdHIiPk5pY2UgZXhhbXBsZSB0aGFua3MuPC9wPg0KPHAgZGlyPSJsdHIiPk1heSBi ZSBteSBwcm9ibGVtIGlzIHRoYXQgcCBpcyBnbG9iYWwgaW4gbXkgY2FzZT88YnI+PC9wPg0KPHAg ZGlyPSJsdHIiPkdpYWNvbW88L3A+DQo8ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+SWwgMDUvU2V0 LzIwMTUgMTg6NTAsICZxdW90O2VyaWsgcXVhbnN0cm9tJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWls dG86cXVhbnN0cm9AcXVhbnN0cm8ubmV0Ij5xdWFuc3Ryb0BxdWFuc3Ryby5uZXQ8L2E+Jmd0OyBo YSBzY3JpdHRvOjxiciB0eXBlPSJhdHRyaWJ1dGlvbiI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWls X3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29s aWQ7cGFkZGluZy1sZWZ0OjFleCI+YnkgdGhlIHdheSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHJ1 bnMgd2l0aG91dCBhc3NlcnRpbmcgZm9yIG1lPGJyPg0Kd2l0aCBvciB3aXRob3V0IHRoZSB3YWl0 cy48YnI+DQo8YnI+DQotIGVyaWs8YnI+DQo8YnI+DQotLS08YnI+DQo8YnI+DQojaW5jbHVkZSAm bHQ7dS5oJmd0Ozxicj4NCiNpbmNsdWRlICZsdDtsaWJjLmgmZ3Q7PGJyPg0KPGJyPg0Kdm9pZDxi cj4NCnRhc2sodm9pZCAqKnApPGJyPg0Kezxicj4NCsKgIMKgIMKgIMKgIGFzc2VydCgqcCA9PSBu aWwpOzxicj4NCsKgIMKgIMKgIMKgICpwID0gKHZvaWQqKSh1aW50cHRyKWdldHBpZCgpOzxicj4N Cn08YnI+DQo8YnI+DQp2b2lkPGJyPg0Kc3Bhd24odm9pZCAoKnQpKHZvaWQqKiksIHZvaWQgKipw KTxicj4NCns8YnI+DQrCoCDCoCDCoCDCoCBpbnQgcGlkOzxicj4NCjxicj4NCsKgIMKgIMKgIMKg IHN3aXRjaChwaWQgPSByZm9yayhSRk1FTXxSRlBST0MpKXs8YnI+DQrCoCDCoCDCoCDCoCBjYXNl IC0xOjxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN5c2ZhdGFsKCZxdW90O3NwYXduOiBy Zm9yazogJXImcXVvdDspOzxicj4NCsKgIMKgIMKgIMKgIGNhc2UgMDo8YnI+DQrCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCB0KHApOzxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4aXRzKCZx dW90OyZxdW90Oyk7PGJyPg0KwqAgwqAgwqAgwqAgZGVmYXVsdDo8YnI+DQrCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBVU0VEKHBpZCk7PGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJu Ozxicj4NCsKgIMKgIMKgIMKgIH08YnI+DQp9PGJyPg0KPGJyPg0Kdm9pZDxicj4NCm1haW4odm9p ZCk8YnI+DQp7PGJyPg0KwqAgwqAgwqAgwqAgaW50IGksIGs7PGJyPg0KwqAgwqAgwqAgwqAgdm9p ZCAqKnA7PGJyPg0KwqAgwqAgwqAgwqAgV2FpdG1zZyAqdzs8YnI+DQo8YnI+DQrCoCDCoCDCoCDC oCBwID0gcHJpdmFsbG9jKCk7PGJyPg0KwqAgwqAgwqAgwqAgayA9IDA7PGJyPg0KwqAgwqAgwqAg wqAgZm9yKGkgPSAwOyBpICZsdDsgMTAyNDsgaSsrKXs8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBzcGF3bih0YXNrLCBwKTs8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3Ioaysr OyBrICZndDsgMTY7IGstLSl7PGJyPg0KwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgaWYoKHcgPSB3YWl0KCkpID09IG5pbCk8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazs8YnI+DQrCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBmcmVlKHcpOzxicj4NCsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH08YnI+ DQrCoCDCoCDCoCDCoCB9PGJyPg0KwqAgwqAgwqAgwqAgZXhpdHMoJnF1b3Q7JnF1b3Q7KTs8YnI+ DQp9PGJyPg0KPGJyPg0KPC9ibG9ja3F1b3RlPjwvZGl2Pg0K --001a1130d3969b48a8051f0461d1--