Commit Graph

17 Commits

Author SHA1 Message Date
Frediano Ziglio
125cfa7fb2 Unify headers guard names
Always use H_SPICE_COMMON_ prefix with uppercase filename (without
extension).

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Uri Lublin <uril@redhat.com
2018-11-26 11:20:57 +00:00
Christophe Fergeau
b9dca950fb Remove config.h from header files
This should only be included from c files.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2018-10-08 17:18:12 +02:00
Christophe de Dinechin
858a0bfae9 Avoid clang warnings on casts with stricter alignment requirements
For example, something like this:
    uint8_t  *p8;
    uint32_t *p32 = (uint32_t *) p8;

generates a warning like this:
  spice-channel.c:1350:10: error: cast from 'uint8_t *' (aka 'unsigned char *') to
      'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to
      4 [-Werror,-Wcast-align]

The warning indicates that we end up with a pointer to data that
should be 4-byte aligned, but its value may be misaligned. On x86,
this does not make much of a difference, except a relatively minor
performance penalty. However, on platforms such as older ARM, misaligned
accesses are emulated by the kernel, and support for them is optional.
So we may end up with a fault.

The intent of the fix here is to make it easy to identify and rework
places where actual mis-alignment occurs. Wherever casts raise the warning,
they are replaced with a macro:

- SPICE_ALIGNED_CAST(type, value) casts value to type, and indicates that
  we believe the resulting pointer is aligned. If it is not, a runtime
  warning will be issued. This check is disabled unless
  --enable-alignment-checks is passed at configure time

- SPICE_UNALIGNED_CAST(type, value) casts value to type, and indicates that
  we believe the resulting pointer is not always aligned.

Any code using SPICE_UNALIGNED_CAST may need to be revisited in order
to improve performance, e.g. by using memcpy.

There are normally no warnings for SPICE_UNALIGNED_CAST, but it is possible
to emit debug messages for mis-alignment in SPICE_UNALIGNED_CAST
by configuring with CFLAGS=-DSPICE_DEBUG_ALIGNMENT.

Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
2017-06-20 11:33:45 +02:00
Christophe de Dinechin
5faba1e860 Style adjustment - Making code match surrounding style
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
Acked-by: Victor Toso <victortoso@redhat.com>
2017-05-18 16:37:21 +01:00
Marc-André Lureau
c4482c7ff2 Use SPICE_{BEGIN,END}_DECLS 2012-03-20 15:30:23 +01:00
Christophe Fergeau
ea9e91cd8d mingw: don't try to redefine alloca
mingw already has a #define alloca __builtin_alloca so trying to
redefine it triggers a warning.
2012-03-20 15:25:56 +01:00
Marc-André Lureau
3349946ab2 common: mem.h add alloca definition
We don't support the autoconf ALLOCA/C_ALLOC fallback. If one day,
someone cares for a weird platform, he can fix it.
2012-03-20 15:25:52 +01:00
Christophe Fergeau
c15c5050af common: add extern "C" guards to headers
Since some spice C++ code is using code from common/, the C
functions need to be marked as such for the C++ compiler, otherwise
we'll get linkage issues.
2012-03-20 15:25:51 +01:00
Marc-André Lureau
99a225c87a common: add SpiceBuffer - based on qemu-vnc Buffer
https://bugs.freedesktop.org/show_bug.cgi?id=34795
2012-03-20 15:25:51 +01:00
Alexander Larsson
69c1444add Move SpiceChunks to mem.h 2012-03-20 15:25:48 +01:00
Alexander Larsson
c471990a9f Move in spice/draw.h from spice-protocol to common/ 2012-03-20 15:25:48 +01:00
Alexander Larsson
8f568a4073 Add spice_chunks_* helpers 2012-03-20 15:25:47 +01:00
Alexander Larsson
d4361e12d0 Add spice_strnlen 2012-03-20 15:25:43 +01:00
Alexander Larsson
41171d081d Fix spelling errors in comments and strings 2012-03-20 15:25:42 +01:00
Alexander Larsson
92e30df45c Relicense everything from GPL to LGPL 2.1+ 2012-03-20 15:25:41 +01:00
Alexander Larsson
998bf873bf Add spice_strndup
Also, make str(n)dup handle NULL correctly
2012-03-20 15:25:40 +01:00
Alexander Larsson
59b330b4d2 New memory allocators that exit on OOM and handle multiplication overflow
Every place that does a regular malloc/calloc and aborts on failure
should use spice_malloc/spice_mallo0 instead, which is leaner and cleaner.

Allocations of dynamically sized arrays can use g_malloc_n or g_new etc
which correctly handle multiplication overflow if some of the arguments
are not trusted.
2012-03-20 15:25:40 +01:00