mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
staging: vchiq_arm: use state from vchiq instance
In 'handle_to_service', access the vchiq state from the vchiq instance instead of the global 'vchiq_states' array. This will allow getting rid of the global 'vchiq_states' array. Tested-by: Stefan Wahren <stefan.wahren@i2se.com> Signed-off-by: Adrien Thierry <athierry@redhat.com> Link: https://lore.kernel.org/r/20220518191126.60396-9-athierry@redhat.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6d02150cdf
commit
ed57d93e77
2 changed files with 8 additions and 11 deletions
|
@ -13,6 +13,7 @@
|
|||
#include <linux/rcupdate.h>
|
||||
#include <linux/sched/signal.h>
|
||||
|
||||
#include "vchiq_arm.h"
|
||||
#include "vchiq_core.h"
|
||||
|
||||
#define VCHIQ_SLOT_HANDLER_STACK 8192
|
||||
|
@ -234,6 +235,12 @@ set_service_state(struct vchiq_service *service, int newstate)
|
|||
service->srvstate = newstate;
|
||||
}
|
||||
|
||||
struct vchiq_service *handle_to_service(struct vchiq_instance *instance, unsigned int handle)
|
||||
{
|
||||
int idx = handle & (VCHIQ_MAX_SERVICES - 1);
|
||||
|
||||
return rcu_dereference(instance->state->services[idx]);
|
||||
}
|
||||
struct vchiq_service *
|
||||
find_service_by_handle(struct vchiq_instance *instance, unsigned int handle)
|
||||
{
|
||||
|
|
|
@ -508,17 +508,7 @@ extern void
|
|||
request_poll(struct vchiq_state *state, struct vchiq_service *service,
|
||||
int poll_type);
|
||||
|
||||
static inline struct vchiq_service *
|
||||
handle_to_service(struct vchiq_instance *instance, unsigned int handle)
|
||||
{
|
||||
int idx = handle & (VCHIQ_MAX_SERVICES - 1);
|
||||
struct vchiq_state *state = vchiq_states[(handle / VCHIQ_MAX_SERVICES) &
|
||||
(VCHIQ_MAX_STATES - 1)];
|
||||
|
||||
if (!state)
|
||||
return NULL;
|
||||
return rcu_dereference(state->services[idx]);
|
||||
}
|
||||
struct vchiq_service *handle_to_service(struct vchiq_instance *instance, unsigned int handle);
|
||||
|
||||
extern struct vchiq_service *
|
||||
find_service_by_handle(struct vchiq_instance *instance, unsigned int handle);
|
||||
|
|
Loading…
Reference in a new issue