All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Mackall <mpm@selenic.com>
To: Andi Kleen <andi@firstfloor.org>
Cc: Pavel Machek <pavel@suse.cz>, Ingo Molnar <mingo@elte.hu>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH 1/2] Shrink compat_ioctl.c
Date: Mon, 29 Sep 2008 18:38:02 -0500	[thread overview]
Message-ID: <1222731482.23159.23.camel@calx> (raw)
In-Reply-To: <20080929233842.GW25711@one.firstfloor.org>


On Tue, 2008-09-30 at 01:38 +0200, Andi Kleen wrote:
> On Mon, Sep 29, 2008 at 06:27:10PM -0500, Matt Mackall wrote:
> > I'm throwing this out untested as I don't have a mixed 64/32 system
> > handy at the moment.
> 
> Makes sense (assuming it works, haven't tested)
> 
> > compat_ioctl: shrink structures
> > 
> > Initially, compat_ioctl.c has a ~18k table of translated ioctls.
> > Each table entry is 24 bytes but we can shrink this to 16:
> > 
> > - use short table indexes rather than a pointer for .next values
> > - use unsigned ints for cmd numbers (they're 32-bit ioctls, after all)
> > 
> > In addition, there's a 2k hash table that we can do away with simply
> > by hashifying the main table in place at init time.
> 
> You mean by using a closed hash?

The original hash table was 256 pointers into the main table. I simply
rearrange the main table so the first 256 entries have an appropriate
hash. Basically:

for i in len(table):
  h = hash(table[i])
  swap(table[i], table[hash])

At the end of this loop, table[0:256] will contain an appropriate table
entry, if it exists. So no secondary table is needed.

-- 
Mathematics is the supreme nostalgia of our time.


      reply	other threads:[~2008-09-29 23:40 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-29 23:27 [RFC PATCH 1/2] Shrink compat_ioctl.c Matt Mackall
2008-09-29 23:29 ` [RFC PATCH 2/2] " Matt Mackall
2008-09-29 23:38 ` [RFC PATCH 1/2] " Andi Kleen
2008-09-29 23:38   ` Matt Mackall [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1222731482.23159.23.camel@calx \
    --to=mpm@selenic.com \
    --cc=andi@firstfloor.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=pavel@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.