ba64c39c8caa2f04f3d78765b48d661b7e9d19ee |
|
17-Jun-2016 |
Pavlin Radoslavov <pavlin@google.com> |
Add missing NULL pointers assignments Each pointer that was freed by one of the following functions should be reset to NULL: - config_free() - data_dispatcher_free() - fixed_queue_free() - list_free() Bug: 29421693 Change-Id: Ie55a04ed986393994564edcf872d7413b0767a85 (cherry picked from commit 8cbc291080730cd7d04990a8fc0e11249b06aa08)
/system/bt/stack/rfcomm/port_utils.c
|
9ccca2b5937ec42409d8b6354884f1f4b6d524f7 |
|
18-Mar-2016 |
Andre Eisenbach <eisenbach@google.com> |
Do not leak eventfd's for RFCOMM/AVDT/L2CAP Various users of fixed_queue's do not free the lists properly after using them. As a result two event fd's leak for each fixed_queue that is not free'd, as fixed_queue contains two semaphores. This can lead to run-away file descriptor allocation and an eventual hard limit leading to various undefined behaviours. Bug: 27731859 Change-Id: If9ce64b711083bf474d217aa537220065722ad3a
/system/bt/stack/rfcomm/port_utils.c
|
abd70abb5e42c9431df94fe9d2c4a78a0d8d9af9 |
|
05-Feb-2016 |
Pavlin Radoslavov <pavlin@google.com> |
Replaced osi_getbuf()/osi_freebuf() with osi_malloc()/osi_free() Removed the alternative buffer allocation osi_getbuf() / osi_freebuf() and use instead osi_malloc() / osi_free(). Correspondingly, replaced usage of osi_freebuf_and_reset() with osi_free_and_reset(). Bug: 24914560 Change-Id: I7a9599ba7fa900321f087da684428133eb0ddd6b
/system/bt/stack/rfcomm/port_utils.c
|
78bcff79e1b1f0efce436b33bdd6da88745bfc8a |
|
05-Dec-2015 |
Pavlin Radoslavov <pavlin@google.com> |
Refactor the Bluetooth timers * Updated the alarm API: - Existing API alarm_new() is modified to take an alarm name as an argument. - New API alarm_new_periodic() is used to create a periodic alarm. - Added new API alarm_is_scheduled() to test whether an alarm is scheduled. - Existing API alarm_set_periodic() is removed: a periodic alarm is created by alarm_new_periodic(). - Added new API alarm_set_on_queue() to set an alarm whose callback is executed on a specific queue. - Added new API alarm_register_processing_queue() and alarm_unregister_processing_queue() to register/unregister a queue and the corresponding thread for alarm processing. - Added corresponding unit tests. * Updated the alarm internals: - Added alarm_info_t for collecting alarm-related information and statistics. - Collect and store alarm-related statistics into alarm_info_t per alarm. - Include the alarm-related statistics and info into the native dumpsys output for Bluetooth. - Once an alarm expires, the alarm execution is scheduled for processing on another internal alarm-specific thread, not on the thread that is maintaining the alarms. - Implemented callback execution ordering guarantee among timers on the same thread with exactly same timeout values. * Refactor some of the usage of alarm_set() and simplify the code by using alarm_set_on_queue() instead. * Removed the non_repeating timers wrapper, and use directly the alarm mechanism / API. * Refactored all timer_entry_t timers and replaced them with alarm_t timers: - Replaced the btu_start_timer() / btu_stop_timer() / btu_start_quick_timer() / btu_stop_quick_timer() / btu_oneshot_alarm() mechanism with alarm_set_on_queue() and alarm_cancel() - Removed the whole mechanism around the BTU_TTYPE_* timers. * Fixed a bug when processing the GATT indication confirmation timer expiration (timer tGATT_TCB.conf_timer: b/26610829). * Renamed and/or split misc. timeout functions, fields, and timers * Renamed time-related constants and changed the values from seconds to milliseconds * Replaced timer tAVDT_CCB.timer_entry with three mutually exclusive timers: idle_ccb_timer, ret_ccb_timer, rsp_ccb_timer The reason we are using three timers, is because in the original code function avdt_ccb_chk_timer() used the timer type in its logic: it would stop the timer only if the type is "idle". * Removed btm_ble_timeout() and replaced it with multiple timeout callback functions (per timer) * Fix the actual value of the global constant BT_1SEC_TIMEOUT and rename it to BT_1SEC_TIMEOUT_MS * Removed btu_cb and associated timers and events, because they are never used. * Removed unused timers, functions, struct and declarations that are not used / needed. Bug: 26611369 Bug: 26610829 Change-Id: I812c8c31710a5daefc58b01fcf35c353768f390f
/system/bt/stack/rfcomm/port_utils.c
|
d3842ed786d7adf1de9f0f9b2cd0de18fa5576e2 |
|
13-Oct-2015 |
Andre Eisenbach <eisenbach@google.com> |
Compile as 64-bit library; fix includes Change-Id: Ie5305d588ff54a80f06be786264e66042ddcf022
/system/bt/stack/rfcomm/port_utils.c
|
e29c3430bfee2d92ba09c3cb4780a577ffc90712 |
|
28-Sep-2015 |
Pavlin Radoslavov <pavlin@google.com> |
GKI cleanup - removed PORT_SCHEDULE_LOCK / UNLOCK macros Removed macros PORT_SCHEDULE_LOCK and PORT_SCHEDULE_UNLOCK and replaced them with direct calls to mutex_global_lock() and mutex_global_unlock() respectively. Change-Id: I84a365feec239612b2224f029ae59f260cdb24a4
/system/bt/stack/rfcomm/port_utils.c
|
258c2538e3b62a8cdb403f2730c45d721e5292b4 |
|
28-Sep-2015 |
Pavlin Radoslavov <pavlin@google.com> |
GKI cleanup - moved GKI buffer allocation wrappers to OSI * Moved the following GKI buffer allocation functions to OSI: - GKI_getbuf() -> osi_getbuf() - GKI_freebuf() -> osi_freebuf() - GKI_get_buf_size() -> osi_get_buf_size() For now we need the osi_getbuf() / osi_freebuf() allocation wrapper, because we need to be able to call osi_get_buf_size() on the allocated buffer. In the future those should be replaced with osi_malloc() / osi_free(). Currently, the osi_malloc() buffer size internal allocation tracker does not always track the size, hence we need the osi_getbuf() wrapper. * Replaced GKI_MAX_BUF_SIZE with BT_DEFAULT_BUFFER_SIZE * Added new file include/bt_common.h that can be usee to include few files that should be included alost everywhere (e.g. bt_target.h" NOTE: This file might be removed in the future and we should include everywhere the right set of header files. * Removed some of the GKI-related references * Removed file include/gki_target.h Change-Id: Ie87830e73143de200746d54235aa99f228a95024
/system/bt/stack/rfcomm/port_utils.c
|
1a3844f933bd63c8a381371dabfb35c6a0249e3e |
|
25-Sep-2015 |
Pavlin Radoslavov <pavlin@google.com> |
GKI cleanup - Replaced usage of GKI queue with OSI fixed_queue * Added new functions to OSI: - fixed_queue_init() - fixed_queue_length() - fixed_queue_try_remove_from_queue() - fixed_queue_try_peek_last() * Renamed fixed_queue_try_peek() to fixed_queue_try_peek_first() * Replaced usage of GKI queue functions with OSI fixed_queue functions: - GKI_init_q() -> fixed_queue_new(SIZE_MAX) NOTE: unlike GKI_init_q(), fixed_queue_new() allocates memory / state that needs to be released by calling fixed_queue_free() - GKI_enqueue() -> fixed_queue_enqueue() - GKI_dequeue() -> fixed_queue_try_dequeue() NOTE: fixed_queue_try_dequeue() is non-blocking - GKI_queue_length() -> fixed_queue_length() - GKI_queue_is_empty() -> fixed_queue_is_empty() - GKI_getfirst() -> fixed_queue_try_peek_first() - GKI_getlast() -> fixed_queue_try_peek_last() - GKI_remove_from_queue() -> fixed_queue_try_remove_from_queue() - Queue elements iteration. In the fixed_queue implementation we have to use the underlying list_t mechanism to iterate over the elements. OLD: p = GKI_getfirst(queue); ... while ((p = GKI_getnext(p) != NULL) { ... } NEW: list_t *list = fixed_queue_get_list(queue); for (const list_node_t *node = list_begin(list); node != list_end(list); node = list_next(node)) { p = list_node(node); } * Remove initialization of the GKI module, because it is not needed anymore * Removed unused files in GKI: gki/common/gki_common.h gki/ulinux/gki_int.h gki/ulinux/gki_ulinux.c Change-Id: I3ff9464db75252d6faf7476a9ca67c88e535c51c
/system/bt/stack/rfcomm/port_utils.c
|
fe7216ca12f91baae733e7c93063db73121af308 |
|
06-May-2014 |
Chris Manton <cmanton@google.com> |
Enforce GKI API buffer usage Also add another API GKI_queue_length(BUFFER_Q *)
/system/bt/stack/rfcomm/port_utils.c
|
d5bba906b0704cd60e824613bd2e438935ba5d89 |
|
04-May-2014 |
Sharvil Nanavati <sharvil@google.com> |
Logging cleanup: RFCOMM and GAP. Change-Id: I83fda4f0805aaeb2ca060870449868879edcff78
/system/bt/stack/rfcomm/port_utils.c
|
9ac641d0a674333af57b85b367e64cf94dfae291 |
|
16-Jan-2013 |
Matthew Xie <mattx@google.com> |
fixed rfc resouce leaking and multi-session issue also added more debug messages bug 7486080 Change-Id: Ic21e9d2df5f651b51ea2126a3cac25811808dcfb
/system/bt/stack/rfcomm/port_utils.c
|
689d66b6559dcb3a0ad7f6cc33b6129e50910253 |
|
13-Dec-2012 |
The Android Open Source Project <initial-contribution@android.com> |
Snapshot 9fd57cbacd95e89602f430244c35bbc67f08b6d2 Change-Id: Ibc3a4bf4161d286c7cfab89a19c676eb5cc9224f
/system/bt/stack/rfcomm/port_utils.c
|
5738f83aeb59361a0a2eda2460113f6dc9194271 |
|
13-Dec-2012 |
The Android Open Source Project <initial-contribution@android.com> |
Snapshot cdeccf6fdd8c2d494ea2867cb37a025bf8879baf Change-Id: Ia2de32ccb97a9641462c72363b0a8c4288f4f36d
/system/bt/stack/rfcomm/port_utils.c
|