From owner-freebsd-arch Sat May 13 7:43:50 2000 Delivered-To: freebsd-arch@freebsd.org Received: from anchor-post-34.mail.demon.net (anchor-post-34.mail.demon.net [194.217.242.92]) by hub.freebsd.org (Postfix) with ESMTP id D76B437BF45 for ; Sat, 13 May 2000 07:43:38 -0700 (PDT) (envelope-from dfr@nlsystems.com) Received: from nlsys.demon.co.uk ([158.152.125.33] helo=herring.nlsystems.com) by anchor-post-34.mail.demon.net with esmtp (Exim 2.12 #1) id 12qd8f-000N7c-0Y; Sat, 13 May 2000 15:43:33 +0100 Received: from salmon.nlsystems.com (salmon.nlsystems.com [10.0.0.3]) by herring.nlsystems.com (8.9.3/8.8.8) with ESMTP id PAA37671; Sat, 13 May 2000 15:47:39 +0100 (BST) (envelope-from dfr@nlsystems.com) Date: Sat, 13 May 2000 15:48:08 +0100 (BST) From: Doug Rabson To: Chuck Paterson Cc: arch@freebsd.org Subject: Re: A new api for asynchronous task execution In-Reply-To: <200005131422.IAA00701@berserker.bsdi.com> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-920267420-958229288=:47945" Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-920267420-958229288=:47945 Content-Type: TEXT/PLAIN; charset=US-ASCII On Sat, 13 May 2000, Chuck Paterson wrote: > > Doug, > You might want to consider having a separate function/macro > to enqueue on the taskqueue_swi. Instead of passing in the actual > name of the task queue you would pass in some sort of flag which > for now could be something like TASKQUEUE(foobar, TASKQUEUE_SWI). > This would allow the lower level taskqueue_enqueue to just do the > enqueueing without having to check if a software interrupt needs > to be generated. For now the flag could be totally ignored, adding > zero weight to what you have now. Later on, supposing that the > system can support multiple interrupt threads on multiple processors, > the flag could be used in a switch statement that determines which > level/queue the task gets enqueued on. In a macro this code would > be determined at compile time. Also it may be useful to have a flag > that prevents immediate execution, ie no scheduling event, if the > task is enqueued from the top half. This also is not needed at all > now. I don't want to make the api too specific to one particular method of running the queue (i.e. software interrupts). The intention is that the taskqueue_xxx() apis simply deal with moving tasks onto and off the queue. The system defines specific implementations of queues which are drained at particular times (initially I have defined one using SWI). I want to make it as easy as possible to define different lightweight queues for various types of work. The 'enqueue' function pointer in the taskqueue structure defines the run policy for the queue. I can imagine various queues being written which drain at different times (e.g. on clock tick, once after autoconfiguration, driver-specific work queues etc.) Take a look at my initial implementation to see how taskqueue_swi is implemented. Note that the implementation of taskqueue_swi is logically separate from the taskqueue api itself. -- Doug Rabson Mail: dfr@nlsystems.com Nonlinear Systems Ltd. Phone: +44 20 8442 9037 --0-920267420-958229288=:47945 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="subr_taskqueue.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="subr_taskqueue.c" LyotDQogKiBDb3B5cmlnaHQgKGMpIDIwMDAgRG91ZyBSYWJzb24NCiAqIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0DQogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqIGFyZSBtZXQ6DQog KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy Lg0KICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lciBpbiB0aGUNCiAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90 aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u DQogKg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU SE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORA0KICogQU5ZIEVY UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRCBUTywgVEhFDQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRQ0KICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM TCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUNCiAqIEZP UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQogKiBEQU1BR0VTIChJTkNM VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC U1RJVFVURSBHT09EUw0KICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQog KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KICogTElBQklMSVRZ LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up IEFSSVNJTkcgSU4gQU5ZIFdBWQ0KICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJ UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRg0KICogU1VDSCBEQU1BR0UuDQogKg0KICoJJEZyZWVCU0QkDQogKi8N Cg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUgPHN5cy9xdWV1 ZS5oPg0KI2luY2x1ZGUgPHN5cy9zeXN0bS5oPg0KI2luY2x1ZGUgPHN5cy9r ZXJuZWwuaD4NCiNpbmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+DQojaW5jbHVk ZSA8c3lzL2ludGVycnVwdC5oPg0KI2luY2x1ZGUgPG1hY2hpbmUvaXBsLmg+ DQoNCnZvaWQNCnRhc2txdWV1ZV9pbml0KHN0cnVjdCB0YXNrcXVldWUgKnF1 ZXVlLA0KCSAgICAgICB2b2lkICgqZW5xdWV1ZSkoc3RydWN0IHRhc2txdWV1 ZSAqcXVldWUpKQ0Kew0KCVNUQUlMUV9JTklUKCZxdWV1ZS0+cXVldWUpOw0K CXF1ZXVlLT5lbnF1ZXVlID0gZW5xdWV1ZTsNCn0NCg0Kdm9pZA0KdGFza3F1 ZXVlX2VucXVldWUoc3RydWN0IHRhc2txdWV1ZSAqcXVldWUsIHN0cnVjdCB0 YXNrICp0YXNrKQ0Kew0KCWludCBzID0gc3BsaGlnaCgpOw0KDQoJLyoNCgkg KiBDb3VudCBtdWx0aXBsZSBlbnF1ZXVlcy4NCgkgKi8NCglpZiAodGFzay0+ cGVuZGluZykgew0KCQl0YXNrLT5wZW5kaW5nKys7DQoJCXJldHVybjsNCgl9 DQoJU1RBSUxRX0lOU0VSVF9UQUlMKCZxdWV1ZS0+cXVldWUsIHRhc2ssIGxp bmspOw0KCXRhc2stPnBlbmRpbmcgPSAxOw0KCWlmIChxdWV1ZS0+ZW5xdWV1 ZSkNCgkJcXVldWUtPmVucXVldWUocXVldWUpOw0KDQoJc3BseChzKTsNCn0N Cg0Kdm9pZA0KdGFza3F1ZXVlX3J1bihzdHJ1Y3QgdGFza3F1ZXVlICpxdWV1 ZSkNCnsNCglpbnQgczsNCglzdHJ1Y3QgdGFzayAqdGFzazsNCglpbnQgcGVu ZGluZzsNCg0KCXdoaWxlIChTVEFJTFFfRklSU1QoJnF1ZXVlLT5xdWV1ZSkp IHsNCgkJLyoNCgkJICogQ2FyZWZ1bGx5IHJlbW92ZSB0aGUgZmlyc3QgdGFz ayBmcm9tIHRoZSBxdWV1ZSBhbmQNCgkJICogemVybyBpdHMgcGVuZGluZyBj b3VudC4NCgkJICovDQoJCXMgPSBzcGxoaWdoKCk7DQoJCXRhc2sgPSBTVEFJ TFFfRklSU1QoJnF1ZXVlLT5xdWV1ZSk7DQoJCVNUQUlMUV9SRU1PVkVfSEVB RCgmcXVldWUtPnF1ZXVlLCBsaW5rKTsNCgkJcGVuZGluZyA9IHRhc2stPnBl bmRpbmc7DQoJCXRhc2stPnBlbmRpbmcgPSAwOw0KCQlzcGx4KHMpOw0KDQoJ CXRhc2stPmZ1bmModGFzay0+YXJnLCBwZW5kaW5nKTsNCgl9DQp9DQoNCnN0 cnVjdCB0YXNrcXVldWUgdGFza3F1ZXVlX3N3aTsNCg0Kc3RhdGljIHZvaWQN CnRhc2txdWV1ZV9zd2lfZW5xdWV1ZShzdHJ1Y3QgdGFza3F1ZXVlICpxdWV1 ZSkNCnsNCglzZXRzb2Z0dHEoKTsNCn0NCg0Kc3RhdGljIHZvaWQNCnRhc2tx dWV1ZV9zd2lfcnVuKHZvaWQpDQp7DQoJdGFza3F1ZXVlX3J1bigmdGFza3F1 ZXVlX3N3aSk7DQp9DQoNCnN0YXRpYyB2b2lkDQp0YXNrcXVldWVfc3dpX2lu aXQodm9pZCAqYXJnKQ0Kew0KCXRhc2txdWV1ZV9pbml0KCZ0YXNrcXVldWVf c3dpLCB0YXNrcXVldWVfc3dpX2VucXVldWUpOw0KCXJlZ2lzdGVyX3N3aShT V0lfVFEsIHRhc2txdWV1ZV9zd2lfcnVuKTsNCn0NCg0KU1lTSU5JVCh0YXNr cXVldWUsIFNJX1NVQl9DT05GSUdVUkUsIFNJX09SREVSX1NFQ09ORCwNCgl0 YXNrcXVldWVfc3dpX2luaXQsIE5VTEwpOw0K --0-920267420-958229288=:47945-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message