Commit 02d84a95 authored by Nicolas Saenz Julienne's avatar Nicolas Saenz Julienne Committed by Greg Kroah-Hartman

staging: vchiq_core: do not initialize semaphores twice

vchiq_init_state() initialises a series of semaphores to then call
remote_event_create() on the same semaphores, which initializes them
again. We get rid of the second initialization.
Signed-off-by: default avatarNicolas Saenz Julienne <nsaenzjulienne@suse.de>
Acked-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3fc499c8
...@@ -418,12 +418,11 @@ vchiq_set_conn_state(VCHIQ_STATE_T *state, VCHIQ_CONNSTATE_T newstate) ...@@ -418,12 +418,11 @@ vchiq_set_conn_state(VCHIQ_STATE_T *state, VCHIQ_CONNSTATE_T newstate)
} }
static inline void static inline void
remote_event_create(VCHIQ_STATE_T *state, REMOTE_EVENT_T *event) remote_event_create(REMOTE_EVENT_T *event)
{ {
event->armed = 0; event->armed = 0;
/* Don't clear the 'fired' flag because it may already have been set /* Don't clear the 'fired' flag because it may already have been set
** by the other side. */ ** by the other side. */
sema_init((struct semaphore *)((char *)state + event->event), 0);
} }
static inline int static inline int
...@@ -2237,18 +2236,18 @@ vchiq_init_state(VCHIQ_STATE_T *state, VCHIQ_SLOT_ZERO_T *slot_zero) ...@@ -2237,18 +2236,18 @@ vchiq_init_state(VCHIQ_STATE_T *state, VCHIQ_SLOT_ZERO_T *slot_zero)
state->data_quota = state->slot_queue_available - 1; state->data_quota = state->slot_queue_available - 1;
local->trigger.event = offsetof(VCHIQ_STATE_T, trigger_event); local->trigger.event = offsetof(VCHIQ_STATE_T, trigger_event);
remote_event_create(state, &local->trigger); remote_event_create(&local->trigger);
local->tx_pos = 0; local->tx_pos = 0;
local->recycle.event = offsetof(VCHIQ_STATE_T, recycle_event); local->recycle.event = offsetof(VCHIQ_STATE_T, recycle_event);
remote_event_create(state, &local->recycle); remote_event_create(&local->recycle);
local->slot_queue_recycle = state->slot_queue_available; local->slot_queue_recycle = state->slot_queue_available;
local->sync_trigger.event = offsetof(VCHIQ_STATE_T, sync_trigger_event); local->sync_trigger.event = offsetof(VCHIQ_STATE_T, sync_trigger_event);
remote_event_create(state, &local->sync_trigger); remote_event_create(&local->sync_trigger);
local->sync_release.event = offsetof(VCHIQ_STATE_T, sync_release_event); local->sync_release.event = offsetof(VCHIQ_STATE_T, sync_release_event);
remote_event_create(state, &local->sync_release); remote_event_create(&local->sync_release);
/* At start-of-day, the slot is empty and available */ /* At start-of-day, the slot is empty and available */
((VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state, local->slot_sync))->msgid ((VCHIQ_HEADER_T *)SLOT_DATA_FROM_INDEX(state, local->slot_sync))->msgid
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment