driver/sensor: export upper half lock

Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
This commit is contained in:
Jiuzhu Dong 2022-06-23 12:13:56 +08:00 committed by Xiang Xiao
parent 48b4667318
commit 107e3e5d52
2 changed files with 28 additions and 1 deletions

View File

@ -177,6 +177,18 @@ static const struct file_operations g_sensor_fops =
* Private Functions * Private Functions
****************************************************************************/ ****************************************************************************/
static void sensor_lock(FAR void *priv)
{
FAR struct sensor_upperhalf_s *upper = priv;
nxrmutex_lock(&upper->lock);
}
static void sensor_unlock(FAR void *priv)
{
FAR struct sensor_upperhalf_s *upper = priv;
nxrmutex_unlock(&upper->lock);
}
static bool sensor_in_range(unsigned long left, unsigned long value, static bool sensor_in_range(unsigned long left, unsigned long value,
unsigned long right) unsigned long right)
{ {
@ -1018,6 +1030,8 @@ int sensor_custom_register(FAR struct sensor_lowerhalf_s *lower,
/* Bind the lower half data structure member */ /* Bind the lower half data structure member */
lower->priv = upper; lower->priv = upper;
lower->sensor_lock = sensor_lock;
lower->sensor_unlock = sensor_unlock;
if (!lower->ops->fetch) if (!lower->ops->fetch)
{ {

View File

@ -937,6 +937,19 @@ struct sensor_lowerhalf_s
sensor_notify_event_t notify_event; sensor_notify_event_t notify_event;
}; };
/****************************************************************************
* Name: sensor_lock/sensor_unlock
*
* Description:
* Lower half driver can lock/unlock upper half driver by this interface.
*
* Input Parameters:
* priv - Upper half driver handle
****************************************************************************/
void (*sensor_lock)(void * priv);
void (*sensor_unlock)(void * priv);
/* The private opaque pointer to be passed to upper-layer during callback */ /* The private opaque pointer to be passed to upper-layer during callback */
FAR void *priv; FAR void *priv;