From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Fri, 18 May 2001 22:01:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Fri, 18 May 2001 22:01:38 -0400 Received: from c1505401-a.stcla1.sfba.home.com ([24.176.232.20]:27147 "HELO luban.org") by vger.kernel.org with SMTP id ; Fri, 18 May 2001 22:01:26 -0400 Message-ID: <3B05D498.1E91B43C@luban.org> Date: Fri, 18 May 2001 19:04:08 -0700 From: Vitaly Luban X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.18 i686) X-Accept-Language: en MIME-Version: 1.0 To: "linux-kernel@vger.kernel.org" , linux-net@vger.kernel.org Subject: [PATCH][RFC] Signal-per-fd for RT signals Content-Type: multipart/mixed; boundary="------------38798FB9CC11D20072E30BF4" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. --------------38798FB9CC11D20072E30BF4 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, I'm sorry, the previous message slipped out w/o subj. Attached patch is an implementation of "signal-per-fd" enhancement to kernel RT signal mechanism, AFAIK first proposed by A. Chandra and D. Mosberger : http://www.hpl.hp.com/techreports/2000/HPL-2000-174.html which should dramatically increase linux based network servers scalability. Patch is made against 2.4.4 tree. This patch allows to set signal-per-fd mode per each file descriptor by introducing new fcntls "F_SETAUXFL" and "F_GETAUXFL" with one possible argument "O_ONESIGFD" to F_SETAUXFL defined. When set, no additional siginfo will be queued for an RT signal, generated by event on file descriptor, while there is already one queued, though event report field in already queued struct siginfo - "si_band" is updated. I'd also like to hear an opinion on the signal filtering capability. I.e, it's relatively easy to filter signals upon an interest mask, supplied by the same F_SETAUXFL in the form of POLL_... This will bring functionality of RT signals event notification on the level with 'select' or 'poll' one, while more efficient and scalable. If there's an interest in such a feature, I'd be eager to publish a patch. Thanks, Vitaly. --------------38798FB9CC11D20072E30BF4 Content-Type: application/x-gzip; name="one-sig-perfd-2.4.4.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="one-sig-perfd-2.4.4.patch.gz" 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 --------------38798FB9CC11D20072E30BF4--