All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Daryl Van Vorst <daryl@wideray.com>,
	"'BlueZ Mailing List'" <bluez-devel@lists.sourceforge.net>
Subject: RE: [Bluez-devel] Alignment issue
Date: Thu, 12 Aug 2004 12:22:34 +0200	[thread overview]
Message-ID: <1092306154.28711.85.camel@pegasus> (raw)
In-Reply-To: <1092304890.15466.44.camel@hades.cambridge.redhat.com>

Hi David,

> > I am not an expert when it comes to specific compiler stuff and I can't
> > make the best decision with my limited information. What I realized is
> > that we need our own unaligned access implementation, because we can't
> > rely on the asm/unaligned.h. So I started to put our own in bluetooth.h
> > for general access. If this was wrong, please correct me.
> 
> No, that was entirely correct. I may even have prodded you to do it
> after packaging bluez-utils for all the Fedora architectures. 

btw what is the status of BlueZ for Fedora Core. Currently I know the
status of them for Debian and SuSE. Are there any extra patches that I
must know of? How do you split the bluez-utils into different packages?

> > Some platforms can do unaligned access by themself and some are not. At
> > the moment only the i386 is listed, but we should list others like AMD64
> > and PowerPC. Patches and hints are welcome. For the rest the generic way
> > is to use memcpy, but actually every architecture uses memmove, because
> > of the GCC __builtin_memcpy problem. Some of them like Alpha and ARM are
> > using specific implementations, but using the macro with memmove seems
> > also to work fine there. I like to keep the unaligned macros as short as
> > possible.
> > 
> > Do anyone wrote an autoconf macro for checking if memmove works like
> > expected or if it gets optimized by the compiler?
> 
> Autocrap considered harmful; I'd rather let the compiler do it.

Actually I meant to let autoconf compile some test code, then run it and
analyse that result.

> The reason the compiler isn't doing what you want with memcpy is because
> it 'knows' the source pointer is aligned, because it was a pointer to,
> for example, an int, and it knows that such pointers have certain
> alignment. You need to stop the compiler from 'knowing' that. Ways of
> achieving this include __attribute__((packed)) -- you could try
> something like this:
> 
> #define put_unaligned(ptr, val) { \
> 	struct { typeof(*ptr) __v } __attribute__((packed)) __p; \
> 	__p = (void *)(ptr); \
> 	__p->__v = (val); \
> }
> 
> Now gcc will know that the object '__v' it's loading from the packed
> structure may not be aligned, and it should emit code optimal for the
> architecture in question.
> 
> The above was typed into the email -- it probably won't even compile,
> let alone work. But variations on the theme should work. In fact I'm not
> entirely sure we even need the structure -- we might be able to get away
> with 
> 	(typeof (*ptr)) *__p __attribute__((packed));
> 	*__p = (val);

For now I will use memmove, but we need clarification on this. I lost my
Sun Ultra system, so I can't do any tests.

Please send me the additional compiler defines for architectures that
can do unaligned access by themself.

Regards

Marcel




-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel

  reply	other threads:[~2004-08-12 10:22 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-10 18:38 [Bluez-devel] Alignment issue Daryl Van Vorst
2004-08-10 23:12 ` Marcel Holtmann
2004-08-11  9:20   ` Stephen Crane
2004-08-11 11:08     ` David Woodhouse
2004-08-11 19:33       ` Marcel Holtmann
2004-08-11  7:13 ` Marcel Holtmann
2004-08-11 16:44   ` Daryl Van Vorst
2004-08-11 19:31     ` Marcel Holtmann
2004-08-12  8:34       ` David Woodhouse
2004-08-12  9:27         ` Marcel Holtmann
2004-08-12 10:01           ` David Woodhouse
2004-08-12 10:22             ` Marcel Holtmann [this message]
2004-08-12 10:35               ` David Woodhouse
2004-08-12 11:00                 ` Marcel Holtmann
2004-08-12 11:33                   ` David Woodhouse
2004-08-12 11:49                     ` Marcel Holtmann
2004-08-12 12:02                       ` David Woodhouse
2004-08-12 12:29                         ` Marcel Holtmann
2004-08-12 13:36                         ` Marcel Holtmann
2004-08-13  8:07                           ` David Woodhouse
2004-08-13  9:05                             ` Marcel Holtmann
2004-08-13  9:14                               ` David Woodhouse
2004-08-13 11:52                               ` David Woodhouse
2004-08-13 12:40                                 ` Marcel Holtmann
2004-08-12 12:53               ` David Woodhouse
2004-08-13  9:58                 ` Marcel Holtmann
2004-08-13 10:56                   ` David Woodhouse
2004-08-12 10:10           ` Stephen Crane
2004-08-12 10:25             ` Marcel Holtmann
2005-01-20 14:30   ` David Woodhouse
2005-01-20 14:45     ` Marcel Holtmann
2005-01-20 14:59       ` David Woodhouse
2005-01-20 18:14         ` Marcel Holtmann
2005-01-21  8:26           ` David Woodhouse
2005-01-23  8:12             ` Marcel Holtmann
2005-01-23 11:39         ` Marcel Holtmann
2005-01-23 12:29           ` David Woodhouse
2005-01-23 14:40             ` Marcel Holtmann
2005-01-23 15:11               ` David Woodhouse
2005-01-23 15:22                 ` Marcel Holtmann
2005-01-23 23:16                   ` David Woodhouse
  -- strict thread matches above, loose matches on Subject: below --
2004-08-16  9:48 john smith
2004-08-16 10:15 ` Marcel Holtmann

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=1092306154.28711.85.camel@pegasus \
    --to=marcel@holtmann.org \
    --cc=bluez-devel@lists.sourceforge.net \
    --cc=daryl@wideray.com \
    --cc=dwmw2@infradead.org \
    /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.