/* * Profiling infrastructure declarations. * * This file is based on gcc-internal definitions. Data structures are * defined to be compatible with gcc counterparts. For a better * understanding, refer to gcc source: gcc/gcov-io.h. * * Copyright IBM Corp. 2009 * Author(s): Peter Oberparleiter * * Uses gcc-internal data definitions. */ #ifndef GCOV_H #define GCOV_H GCOV_H #include /* * Profiling data types used for gcc 3.4 and above - these are defined by * gcc and need to be kept as close to the original definition as possible to * remain compatible. */ #define GCOV_DATA_MAGIC ((unsigned int) 0x67636461) #define GCOV_TAG_FUNCTION ((unsigned int) 0x01000000) #define GCOV_TAG_COUNTER_BASE ((unsigned int) 0x01a10000) #define GCOV_TAG_FOR_COUNTER(count) \ (GCOV_TAG_COUNTER_BASE + ((unsigned int) (count) << 17)) #if BITS_PER_LONG >= 64 typedef long gcov_type; #else typedef long long gcov_type; #endif /* Opaque gcov_info. The gcov structures can change as for example in gcc 4.7 so * we cannot use full definition here and they need to be placed in gcc specific * implementation of gcov. This also means no direct access to the members in * generic code and usage of the interface below.*/ struct gcov_info; /* Interface to access gcov_info data */ const char *gcov_info_filename(struct gcov_info *info); unsigned int gcov_info_version(struct gcov_info *info); struct gcov_info *gcov_info_next(struct gcov_info *info); void gcov_info_link(struct gcov_info *info); void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info); /* Base interface. */ enum gcov_action { GCOV_ADD, GCOV_REMOVE, }; void gcov_event(enum gcov_action action, struct gcov_info *info); void gcov_enable_events(void); /* Iterator control. */ struct seq_file; struct gcov_iterator; struct gcov_iterator *gcov_iter_new(struct gcov_info *info); void gcov_iter_free(struct gcov_iterator *iter); void gcov_iter_start(struct gcov_iterator *iter); int gcov_iter_next(struct gcov_iterator *iter); int gcov_iter_write(struct gcov_iterator *iter, struct seq_file *seq); struct gcov_info *gcov_iter_get_info(struct gcov_iterator *iter); /* gcov_info control. */ void gcov_info_reset(struct gcov_info *info); int gcov_info_is_compatible(struct gcov_info *info1, struct gcov_info *info2); void gcov_info_add(struct gcov_info *dest, struct gcov_info *source); struct gcov_info *gcov_info_dup(struct gcov_info *info); void gcov_info_free(struct gcov_info *info); struct gcov_link { enum { OBJ_TREE, SRC_TREE, } dir; const char *ext; }; extern const struct gcov_link gcov_link[]; #endif /* GCOV_H */ lect name='qt'>
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2017-01-30 11:26:38 +0100
committerJiri Kosina <jkosina@suse.cz>2017-01-31 12:59:32 +0100
commit7a7b5df84b6b4e5d599c7289526eed96541a0654 (patch)
treecf7514c7ddf4410fe37ca9099a2785e1cf08fa7d /include/dt-bindings/power/rk3399-power.h
parent877a021e08ccb6434718c0cc781fdf943c884cc0 (diff)
HID: cp2112: fix sleep-while-atomic
A recent commit fixing DMA-buffers on stack added a shared transfer buffer protected by a spinlock. This is broken as the USB HID request callbacks can sleep. Fix this up by replacing the spinlock with a mutex. Fixes: 1ffb3c40ffb5 ("HID: cp2112: make transfer buffers DMA capable") Cc: stable <stable@vger.kernel.org> # 4.9 Signed-off-by: Johan Hovold <johan@kernel.org> Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'include/dt-bindings/power/rk3399-power.h')