From owner-soc-status@FreeBSD.ORG Mon Aug 24 16:19:09 2009 Return-Path: Delivered-To: soc-status@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DFC89106568C for ; Mon, 24 Aug 2009 16:19:09 +0000 (UTC) (envelope-from admin@mercurysquad.com) Received: from mail-px0-f198.google.com (mail-px0-f198.google.com [209.85.216.198]) by mx1.freebsd.org (Postfix) with ESMTP id C2D3B8FC18 for ; Mon, 24 Aug 2009 16:19:09 +0000 (UTC) Received: by pxi36 with SMTP id 36so5055197pxi.7 for ; Mon, 24 Aug 2009 09:19:09 -0700 (PDT) MIME-Version: 1.0 Sender: admin@mercurysquad.com Received: by 10.142.250.6 with SMTP id x6mr427347wfh.289.1251129124734; Mon, 24 Aug 2009 08:52:04 -0700 (PDT) Date: Mon, 24 Aug 2009 21:22:04 +0530 X-Google-Sender-Auth: 277959814dc0da23 Message-ID: <66b068eb0908240852j50434a1aka3f0a9a54afb87ef@mail.gmail.com> From: Prashant Vaibhav To: soc-status@freebsd.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: callout api final status report X-BeenThere: soc-status@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Summer of Code Status Reports and Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 Aug 2009 16:19:10 -0000 Hi All, At the end of GSoC, I've achieved 2 of the objectives, while the 3rd and the auxiliary objectives could not be achieved. In summary: 1. Callout subsystem was redesigned to remove the 'wheel' data structure, and was replaced with a binary heap. This should be more efficient specially when rearming existing callouts. Initial testing (outside of kernel) shows good average O(1) performance for random insertions. The queues (min and max heap) is generic and can be used by other subsystems within the kernel. 2. A new callout API was written which consolidates many of the functions of the existing API, in a hardware-independent manner. It is currently implemented as a wrapper over existing API, both of which co-exist in the kernel. A demo of its usage can be found in the iwi driver source code, which was updated to use the new API. 3. To actually make the new API fully hardware independent, kobj is used to define an interface for hardware timers. Timer hardware will register themselves with the callout API and one of them can be chosen as the current timing/callout provider. This part is still in its early stages. More detailed information can be found at the blog post on http://freebsd.mercurysquad.com/ Work on the project is expected to continue until all the original goals are achieved. Best, Prashant Vaibhav