mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 17:25:35 +03:00
DCE-KMD: Update DCE OS abstraction - Part 4
Module covered in this CL: dce-cond This is not a functional CL. It does the following. 1) Move os/include/linux-kmd/os-cond.h to os/linux/include/dce-os-cond.h 2) s/dce_cond/dce_os_cond/g 3) s/DCE_COND/DCE_OS_COND/g 4) Delete intermediate include os/include/os-cond.h and replace all includes with <dce-os-cond.h> JIRA TDS-16126 Change-Id: Ib4f3cbe5402b2abe114be89f36e25a6fe47e8b13 Signed-off-by: anupamg <anupamg@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3228543 GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com> Reviewed-by: Arun Swain <arswain@nvidia.com> Reviewed-by: Mahesh Kumar <mahkumar@nvidia.com>
This commit is contained in:
@@ -100,7 +100,7 @@ int dce_handle_boot_complete_requested_event(struct tegra_dce *d, void *params)
|
|||||||
if (ret)
|
if (ret)
|
||||||
dce_os_err(d, "failed to send DCE_BOOT_COMPLETE_RECEIVED event");
|
dce_os_err(d, "failed to send DCE_BOOT_COMPLETE_RECEIVED event");
|
||||||
|
|
||||||
dce_cond_wait_reset(d, DCE_WAIT_BOOT_COMPLETE);
|
dce_os_cond_wait_reset(d, DCE_WAIT_BOOT_COMPLETE);
|
||||||
goto boot_done;
|
goto boot_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,7 +173,7 @@ dce_start_boot_flow(struct tegra_dce *d)
|
|||||||
} else {
|
} else {
|
||||||
d->boot_status |= DCE_FW_BOOT_DONE;
|
d->boot_status |= DCE_FW_BOOT_DONE;
|
||||||
dce_os_info(d, "DCE_BOOT_DONE");
|
dce_os_info(d, "DCE_BOOT_DONE");
|
||||||
dce_cond_broadcast_interruptible(&d->dce_bootstrap_done);
|
dce_os_cond_broadcast_interruptible(&d->dce_bootstrap_done);
|
||||||
}
|
}
|
||||||
|
|
||||||
exit:
|
exit:
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ int tegra_dce_register_ipc_client(u32 type,
|
|||||||
* Wait for bootstrapping to complete before client IPC registration
|
* Wait for bootstrapping to complete before client IPC registration
|
||||||
*/
|
*/
|
||||||
#define DCE_IPC_REGISTER_BOOT_WAIT (30U * 1000)
|
#define DCE_IPC_REGISTER_BOOT_WAIT (30U * 1000)
|
||||||
ret = DCE_COND_WAIT_INTERRUPTIBLE_TIMEOUT(&d->dce_bootstrap_done,
|
ret = DCE_OS_COND_WAIT_INTERRUPTIBLE_TIMEOUT(&d->dce_bootstrap_done,
|
||||||
dce_is_bootstrap_done(d),
|
dce_is_bootstrap_done(d),
|
||||||
DCE_IPC_REGISTER_BOOT_WAIT);
|
DCE_IPC_REGISTER_BOOT_WAIT);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@@ -173,7 +173,7 @@ int tegra_dce_register_ipc_client(u32 type,
|
|||||||
cl->callback_fn = callback_fn;
|
cl->callback_fn = callback_fn;
|
||||||
dce_os_atomic_set(&cl->complete, 0);
|
dce_os_atomic_set(&cl->complete, 0);
|
||||||
|
|
||||||
ret = dce_cond_init(&cl->recv_wait);
|
ret = dce_os_cond_init(&cl->recv_wait);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dce_os_err(d, "dce condition initialization failed for int_type: [%u]",
|
dce_os_err(d, "dce condition initialization failed for int_type: [%u]",
|
||||||
int_type);
|
int_type);
|
||||||
@@ -204,8 +204,8 @@ int tegra_dce_unregister_ipc_client(u32 handle)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
dce_cond_destroy(&cl->recv_wait);
|
dce_os_cond_destroy(&cl->recv_wait);
|
||||||
atomic_set(&cl->complete, 0);
|
dce_os_atomic_set(&cl->complete, 0);
|
||||||
|
|
||||||
return dce_client_ipc_handle_free(cl);
|
return dce_client_ipc_handle_free(cl);
|
||||||
}
|
}
|
||||||
@@ -283,7 +283,7 @@ int dce_client_ipc_wait(struct tegra_dce *d, u32 int_type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
retry_wait:
|
retry_wait:
|
||||||
DCE_COND_WAIT_INTERRUPTIBLE(&cl->recv_wait,
|
DCE_OS_COND_WAIT_INTERRUPTIBLE(&cl->recv_wait,
|
||||||
dce_os_atomic_read(&cl->complete) == 1);
|
dce_os_atomic_read(&cl->complete) == 1);
|
||||||
if (dce_os_atomic_read(&cl->complete) != 1)
|
if (dce_os_atomic_read(&cl->complete) != 1)
|
||||||
goto retry_wait;
|
goto retry_wait;
|
||||||
@@ -375,5 +375,5 @@ void dce_client_ipc_wakeup(struct tegra_dce *d, u32 ch_type)
|
|||||||
return dce_client_schedule_event_work(d);
|
return dce_client_schedule_event_work(d);
|
||||||
|
|
||||||
dce_os_atomic_set(&cl->complete, 1);
|
dce_os_atomic_set(&cl->complete, 1);
|
||||||
dce_cond_signal_interruptible(&cl->recv_wait);
|
dce_os_cond_signal_interruptible(&cl->recv_wait);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -371,13 +371,13 @@ void dce_os_log_msg(struct tegra_dce *d, const char *func_name, int line,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dce_cond_init - Initialize a condition variable
|
* dce_os_cond_init - Initialize a condition variable
|
||||||
*
|
*
|
||||||
* @cond - The condition variable to initialize
|
* @cond - The condition variable to initialize
|
||||||
*
|
*
|
||||||
* Initialize a condition variable before using it.
|
* Initialize a condition variable before using it.
|
||||||
*/
|
*/
|
||||||
int dce_cond_init(struct dce_cond *cond)
|
int dce_os_cond_init(struct dce_os_cond *cond)
|
||||||
{
|
{
|
||||||
init_waitqueue_head(&cond->wq);
|
init_waitqueue_head(&cond->wq);
|
||||||
cond->initialized = true;
|
cond->initialized = true;
|
||||||
@@ -386,17 +386,17 @@ int dce_cond_init(struct dce_cond *cond)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dce_cond_destroy - Destroy a condition variable
|
* dce_os_cond_destroy - Destroy a condition variable
|
||||||
*
|
*
|
||||||
* @cond - The condition variable to destroy
|
* @cond - The condition variable to destroy
|
||||||
*/
|
*/
|
||||||
void dce_cond_destroy(struct dce_cond *cond)
|
void dce_os_cond_destroy(struct dce_os_cond *cond)
|
||||||
{
|
{
|
||||||
cond->initialized = false;
|
cond->initialized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dce_cond_signal - Signal a condition variable
|
* dce_os_cond_signal - Signal a condition variable
|
||||||
*
|
*
|
||||||
* @cond - The condition variable to signal
|
* @cond - The condition variable to signal
|
||||||
*
|
*
|
||||||
@@ -405,7 +405,7 @@ void dce_cond_destroy(struct dce_cond *cond)
|
|||||||
*
|
*
|
||||||
* The waiter is using an uninterruptible wait.
|
* The waiter is using an uninterruptible wait.
|
||||||
*/
|
*/
|
||||||
void dce_cond_signal(struct dce_cond *cond)
|
void dce_os_cond_signal(struct dce_os_cond *cond)
|
||||||
{
|
{
|
||||||
WARN_ON(!cond->initialized);
|
WARN_ON(!cond->initialized);
|
||||||
|
|
||||||
@@ -413,7 +413,7 @@ void dce_cond_signal(struct dce_cond *cond)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dce_cond_signal_interruptible - Signal a condition variable
|
* dce_os_cond_signal_interruptible - Signal a condition variable
|
||||||
*
|
*
|
||||||
* @cond - The condition variable to signal
|
* @cond - The condition variable to signal
|
||||||
*
|
*
|
||||||
@@ -422,7 +422,7 @@ void dce_cond_signal(struct dce_cond *cond)
|
|||||||
*
|
*
|
||||||
* The waiter is using an interruptible wait.
|
* The waiter is using an interruptible wait.
|
||||||
*/
|
*/
|
||||||
void dce_cond_signal_interruptible(struct dce_cond *cond)
|
void dce_os_cond_signal_interruptible(struct dce_os_cond *cond)
|
||||||
{
|
{
|
||||||
WARN_ON(!cond->initialized);
|
WARN_ON(!cond->initialized);
|
||||||
|
|
||||||
@@ -430,7 +430,7 @@ void dce_cond_signal_interruptible(struct dce_cond *cond)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dce_cond_broadcast - Signal all waiters of a condition variable
|
* dce_os_cond_broadcast - Signal all waiters of a condition variable
|
||||||
*
|
*
|
||||||
* @cond - The condition variable to signal
|
* @cond - The condition variable to signal
|
||||||
*
|
*
|
||||||
@@ -439,7 +439,7 @@ void dce_cond_signal_interruptible(struct dce_cond *cond)
|
|||||||
*
|
*
|
||||||
* The waiters are using an uninterruptible wait.
|
* The waiters are using an uninterruptible wait.
|
||||||
*/
|
*/
|
||||||
int dce_cond_broadcast(struct dce_cond *cond)
|
int dce_os_cond_broadcast(struct dce_os_cond *cond)
|
||||||
{
|
{
|
||||||
if (!cond->initialized)
|
if (!cond->initialized)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@@ -450,7 +450,7 @@ int dce_cond_broadcast(struct dce_cond *cond)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dce_cond_broadcast_interruptible - Signal all waiters of a condition
|
* dce_os_cond_broadcast_interruptible - Signal all waiters of a condition
|
||||||
* variable
|
* variable
|
||||||
*
|
*
|
||||||
* @cond - The condition variable to signal
|
* @cond - The condition variable to signal
|
||||||
@@ -460,7 +460,7 @@ int dce_cond_broadcast(struct dce_cond *cond)
|
|||||||
*
|
*
|
||||||
* The waiters are using an interruptible wait.
|
* The waiters are using an interruptible wait.
|
||||||
*/
|
*/
|
||||||
int dce_cond_broadcast_interruptible(struct dce_cond *cond)
|
int dce_os_cond_broadcast_interruptible(struct dce_os_cond *cond)
|
||||||
{
|
{
|
||||||
if (!cond->initialized)
|
if (!cond->initialized)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dce.h>
|
#include <dce.h>
|
||||||
#include <os-cond.h>
|
#include <dce-os-cond.h>
|
||||||
#include <dce-os-lock.h>
|
#include <dce-os-lock.h>
|
||||||
#include <dce-worker.h>
|
#include <dce-worker.h>
|
||||||
#include <dce-os-utils.h>
|
#include <dce-os-utils.h>
|
||||||
@@ -34,7 +34,7 @@ int dce_wait_interruptible(struct tegra_dce *d, u32 msg_id)
|
|||||||
* start waiting. But that should not be an issue as wait->complete
|
* start waiting. But that should not be an issue as wait->complete
|
||||||
* Will be "1" and we immediately exit from the wait.
|
* Will be "1" and we immediately exit from the wait.
|
||||||
*/
|
*/
|
||||||
DCE_COND_WAIT_INTERRUPTIBLE(&wait->cond_wait,
|
DCE_OS_COND_WAIT_INTERRUPTIBLE(&wait->cond_wait,
|
||||||
dce_os_atomic_read(&wait->complete) == 1);
|
dce_os_atomic_read(&wait->complete) == 1);
|
||||||
|
|
||||||
if (dce_os_atomic_read(&wait->complete) != 1)
|
if (dce_os_atomic_read(&wait->complete) != 1)
|
||||||
@@ -70,22 +70,22 @@ void dce_wakeup_interruptible(struct tegra_dce *d, u32 msg_id)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Set wait->complete to "1", so if the wait is called even after
|
* Set wait->complete to "1", so if the wait is called even after
|
||||||
* "dce_cond_signal_interruptible", it'll see the complete variable
|
* "dce_os_cond_signal_interruptible", it'll see the complete variable
|
||||||
* as "1" and exit the wait immediately.
|
* as "1" and exit the wait immediately.
|
||||||
*/
|
*/
|
||||||
dce_os_atomic_set(&wait->complete, 1);
|
dce_os_atomic_set(&wait->complete, 1);
|
||||||
dce_cond_signal_interruptible(&wait->cond_wait);
|
dce_os_cond_signal_interruptible(&wait->cond_wait);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* dce_cond_wait_reset : reset condition wait variable to zero
|
* dce_os_cond_wait_reset : reset condition wait variable to zero
|
||||||
*
|
*
|
||||||
* @d : Pointer to tegra_dce struct.
|
* @d : Pointer to tegra_dce struct.
|
||||||
* @msg_id : index of wait condition
|
* @msg_id : index of wait condition
|
||||||
*
|
*
|
||||||
* Return : void
|
* Return : void
|
||||||
*/
|
*/
|
||||||
void dce_cond_wait_reset(struct tegra_dce *d, u32 msg_id)
|
void dce_os_cond_wait_reset(struct tegra_dce *d, u32 msg_id)
|
||||||
{
|
{
|
||||||
struct dce_wait_cond *wait;
|
struct dce_wait_cond *wait;
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ int dce_work_cond_sw_resource_init(struct tegra_dce *d)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (dce_cond_init(&d->dce_bootstrap_done)) {
|
if (dce_os_cond_init(&d->dce_bootstrap_done)) {
|
||||||
dce_os_err(d, "dce boot wait condition init failed");
|
dce_os_err(d, "dce boot wait condition init failed");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto exit;
|
goto exit;
|
||||||
@@ -119,7 +119,7 @@ int dce_work_cond_sw_resource_init(struct tegra_dce *d)
|
|||||||
for (i = 0; i < DCE_MAX_WAIT; i++) {
|
for (i = 0; i < DCE_MAX_WAIT; i++) {
|
||||||
struct dce_wait_cond *wait = &d->ipc_waits[i];
|
struct dce_wait_cond *wait = &d->ipc_waits[i];
|
||||||
|
|
||||||
if (dce_cond_init(&wait->cond_wait)) {
|
if (dce_os_cond_init(&wait->cond_wait)) {
|
||||||
dce_os_err(d, "dce wait condition %d init failed", i);
|
dce_os_err(d, "dce wait condition %d init failed", i);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto init_error;
|
goto init_error;
|
||||||
@@ -133,10 +133,10 @@ init_error:
|
|||||||
while (i >= 0) {
|
while (i >= 0) {
|
||||||
struct dce_wait_cond *wait = &d->ipc_waits[i];
|
struct dce_wait_cond *wait = &d->ipc_waits[i];
|
||||||
|
|
||||||
dce_cond_destroy(&wait->cond_wait);
|
dce_os_cond_destroy(&wait->cond_wait);
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
dce_cond_destroy(&d->dce_bootstrap_done);
|
dce_os_cond_destroy(&d->dce_bootstrap_done);
|
||||||
exit:
|
exit:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -155,9 +155,9 @@ void dce_work_cond_sw_resource_deinit(struct tegra_dce *d)
|
|||||||
for (i = 0; i < DCE_MAX_WAIT; i++) {
|
for (i = 0; i < DCE_MAX_WAIT; i++) {
|
||||||
struct dce_wait_cond *wait = &d->ipc_waits[i];
|
struct dce_wait_cond *wait = &d->ipc_waits[i];
|
||||||
|
|
||||||
dce_cond_destroy(&wait->cond_wait);
|
dce_os_cond_destroy(&wait->cond_wait);
|
||||||
dce_os_atomic_set(&wait->complete, 0);
|
dce_os_atomic_set(&wait->complete, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
dce_cond_destroy(&d->dce_bootstrap_done);
|
dce_os_cond_destroy(&d->dce_bootstrap_done);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ struct tegra_dce_client_ipc {
|
|||||||
uint32_t handle;
|
uint32_t handle;
|
||||||
uint32_t int_type;
|
uint32_t int_type;
|
||||||
struct tegra_dce *d;
|
struct tegra_dce *d;
|
||||||
struct dce_cond recv_wait;
|
struct dce_os_cond recv_wait;
|
||||||
dce_os_atomic_t complete;
|
dce_os_atomic_t complete;
|
||||||
tegra_dce_client_ipc_callback_t callback_fn;
|
tegra_dce_client_ipc_callback_t callback_fn;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#ifndef DCE_FSM_H
|
#ifndef DCE_FSM_H
|
||||||
#define DCE_FSM_H
|
#define DCE_FSM_H
|
||||||
|
|
||||||
#include <os-cond.h>
|
#include <dce-os-cond.h>
|
||||||
#include <dce-os-lock.h>
|
#include <dce-os-lock.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
#ifndef DCE_WORKER_H
|
#ifndef DCE_WORKER_H
|
||||||
#define DCE_WORKER_H
|
#define DCE_WORKER_H
|
||||||
|
|
||||||
#include <os-cond.h>
|
#include <dce-os-cond.h>
|
||||||
#include <dce-os-lock.h>
|
#include <dce-os-lock.h>
|
||||||
#include <dce-os-atomic.h>
|
#include <dce-os-atomic.h>
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ struct tegra_dce;
|
|||||||
|
|
||||||
struct dce_wait_cond {
|
struct dce_wait_cond {
|
||||||
dce_os_atomic_t complete;
|
dce_os_atomic_t complete;
|
||||||
struct dce_cond cond_wait;
|
struct dce_os_cond cond_wait;
|
||||||
};
|
};
|
||||||
|
|
||||||
int dce_work_cond_sw_resource_init(struct tegra_dce *d);
|
int dce_work_cond_sw_resource_init(struct tegra_dce *d);
|
||||||
@@ -29,6 +29,6 @@ void dce_work_cond_sw_resource_deinit(struct tegra_dce *d);
|
|||||||
void dce_schedule_boot_complete_wait_worker(struct tegra_dce *d);
|
void dce_schedule_boot_complete_wait_worker(struct tegra_dce *d);
|
||||||
int dce_wait_interruptible(struct tegra_dce *d, u32 msg_id);
|
int dce_wait_interruptible(struct tegra_dce *d, u32 msg_id);
|
||||||
void dce_wakeup_interruptible(struct tegra_dce *d, u32 msg_id);
|
void dce_wakeup_interruptible(struct tegra_dce *d, u32 msg_id);
|
||||||
void dce_cond_wait_reset(struct tegra_dce *d, u32 msg_id);
|
void dce_os_cond_wait_reset(struct tegra_dce *d, u32 msg_id);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
#include <dce-ipc.h>
|
#include <dce-ipc.h>
|
||||||
#include <dce-hsp.h>
|
#include <dce-hsp.h>
|
||||||
#include <dce-os-lock.h>
|
#include <dce-os-lock.h>
|
||||||
#include <os-cond.h>
|
#include <dce-os-cond.h>
|
||||||
#include <dce-regs.h>
|
#include <dce-regs.h>
|
||||||
#include <dce-worker.h>
|
#include <dce-worker.h>
|
||||||
#include <dce-fsm.h>
|
#include <dce-fsm.h>
|
||||||
@@ -164,7 +164,7 @@ struct tegra_dce {
|
|||||||
/**
|
/**
|
||||||
* dce_bootstrap_done - Data structure to manage wait for boot done
|
* dce_bootstrap_done - Data structure to manage wait for boot done
|
||||||
*/
|
*/
|
||||||
struct dce_cond dce_bootstrap_done;
|
struct dce_os_cond dce_bootstrap_done;
|
||||||
/**
|
/**
|
||||||
* @d_mb - Stores the current status of dce mailbox interfaces.
|
* @d_mb - Stores the current status of dce mailbox interfaces.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
/*
|
|
||||||
* SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
||||||
* SPDX-License-Identifier: LicenseRef-NvidiaProprietary
|
|
||||||
*
|
|
||||||
* NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
|
|
||||||
* property and proprietary rights in and to this material, related
|
|
||||||
* documentation and any modifications thereto. Any use, reproduction,
|
|
||||||
* disclosure or distribution of this material and related documentation
|
|
||||||
* without an express license agreement from NVIDIA CORPORATION or
|
|
||||||
* its affiliates is strictly prohibited.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef NVDISPLAY_SERVER_OS_COND_H
|
|
||||||
#define NVDISPLAY_SERVER_OS_COND_H
|
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
#include <linux-kmd/os-cond.h>
|
|
||||||
#elif defined(NVDISPLAY_SERVER_HVRTOS)
|
|
||||||
#include <hvrtos/os-cond.h>
|
|
||||||
#else
|
|
||||||
#error "OS Not Supported"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* NVDISPLAY_SERVER_OS_COND_H */
|
|
||||||
@@ -1,35 +1,28 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
* SPDX-FileCopyrightText: Copyright (c) 2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||||
* SPDX-License-Identifier: LicenseRef-NvidiaProprietary
|
|
||||||
*
|
|
||||||
* NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
|
|
||||||
* property and proprietary rights in and to this material, related
|
|
||||||
* documentation and any modifications thereto. Any use, reproduction,
|
|
||||||
* disclosure or distribution of this material and related documentation
|
|
||||||
* without an express license agreement from NVIDIA CORPORATION or
|
|
||||||
* its affiliates is strictly prohibited.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef NVDISPLAY_SERVER_OS_COND_LINUX_H
|
#ifndef DCE_OS_COND_H
|
||||||
#define NVDISPLAY_SERVER_OS_COND_LINUX_H
|
#define DCE_OS_COND_H
|
||||||
|
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
|
||||||
struct dce_cond {
|
struct dce_os_cond {
|
||||||
bool initialized;
|
bool initialized;
|
||||||
wait_queue_head_t wq;
|
wait_queue_head_t wq;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DCE_COND_WAIT - Wait for a condition to be true
|
* DCE_OS_COND_WAIT - Wait for a condition to be true
|
||||||
*
|
*
|
||||||
* @c - The condition variable to sleep on
|
* @c - The condition variable to sleep on
|
||||||
* @condition - The condition that needs to be true
|
* @condition - The condition that needs to be true
|
||||||
*
|
*
|
||||||
* Wait for a condition to become true.
|
* Wait for a condition to become true.
|
||||||
*/
|
*/
|
||||||
#define DCE_COND_WAIT(c, condition) \
|
#define DCE_OS_COND_WAIT(c, condition) \
|
||||||
({\
|
({\
|
||||||
int ret = 0; \
|
int ret = 0; \
|
||||||
wait_event((c)->wq, condition); \
|
wait_event((c)->wq, condition); \
|
||||||
@@ -37,7 +30,7 @@ struct dce_cond {
|
|||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DCE_COND_WAIT_INTERRUPTIBLE - Wait for a condition to be true
|
* DCE_OS_COND_WAIT_INTERRUPTIBLE - Wait for a condition to be true
|
||||||
*
|
*
|
||||||
* @c - The condition variable to sleep on
|
* @c - The condition variable to sleep on
|
||||||
* @condition - The condition that needs to be true
|
* @condition - The condition that needs to be true
|
||||||
@@ -45,7 +38,7 @@ struct dce_cond {
|
|||||||
* Wait for a condition to become true. Returns -ERESTARTSYS
|
* Wait for a condition to become true. Returns -ERESTARTSYS
|
||||||
* on signal.
|
* on signal.
|
||||||
*/
|
*/
|
||||||
#define DCE_COND_WAIT_INTERRUPTIBLE(c, condition) \
|
#define DCE_OS_COND_WAIT_INTERRUPTIBLE(c, condition) \
|
||||||
({ \
|
({ \
|
||||||
int ret = 0; \
|
int ret = 0; \
|
||||||
ret = wait_event_interruptible((c)->wq, condition); \
|
ret = wait_event_interruptible((c)->wq, condition); \
|
||||||
@@ -53,7 +46,7 @@ struct dce_cond {
|
|||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DCE_COND_WAIT_TIMEOUT - Wait for a condition to be true
|
* DCE_OS_COND_WAIT_TIMEOUT - Wait for a condition to be true
|
||||||
*
|
*
|
||||||
* @c - The condition variable to sleep on
|
* @c - The condition variable to sleep on
|
||||||
* @condition - The condition that needs to be true
|
* @condition - The condition that needs to be true
|
||||||
@@ -66,7 +59,7 @@ struct dce_cond {
|
|||||||
* Wait for a condition to become true. Returns -ETIMEOUT if
|
* Wait for a condition to become true. Returns -ETIMEOUT if
|
||||||
* the wait timed out with condition false.
|
* the wait timed out with condition false.
|
||||||
*/
|
*/
|
||||||
#define DCE_COND_WAIT_TIMEOUT(c, condition, timeout_ms) \
|
#define DCE_OS_COND_WAIT_TIMEOUT(c, condition, timeout_ms) \
|
||||||
({\
|
({\
|
||||||
int ret = 0; \
|
int ret = 0; \
|
||||||
/* This is the assignment to enforce a u32 for timeout_ms */ \
|
/* This is the assignment to enforce a u32 for timeout_ms */ \
|
||||||
@@ -84,7 +77,7 @@ struct dce_cond {
|
|||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DCE_COND_WAIT_INTERRUPTIBLE_TIMEOUT - Wait for a condition to be true
|
* DCE_OS_COND_WAIT_INTERRUPTIBLE_TIMEOUT - Wait for a condition to be true
|
||||||
*
|
*
|
||||||
* @c - The condition variable to sleep on
|
* @c - The condition variable to sleep on
|
||||||
* @condition - The condition that needs to be true
|
* @condition - The condition that needs to be true
|
||||||
@@ -98,7 +91,7 @@ struct dce_cond {
|
|||||||
* the wait timed out with condition false or -ERESTARTSYS on
|
* the wait timed out with condition false or -ERESTARTSYS on
|
||||||
* signal.
|
* signal.
|
||||||
*/
|
*/
|
||||||
#define DCE_COND_WAIT_INTERRUPTIBLE_TIMEOUT(c, condition, timeout_ms) \
|
#define DCE_OS_COND_WAIT_INTERRUPTIBLE_TIMEOUT(c, condition, timeout_ms) \
|
||||||
({ \
|
({ \
|
||||||
int ret = 0; \
|
int ret = 0; \
|
||||||
/* This is the assignment to enforce a u32 for timeout_ms */ \
|
/* This is the assignment to enforce a u32 for timeout_ms */ \
|
||||||
@@ -117,16 +110,16 @@ struct dce_cond {
|
|||||||
ret; \
|
ret; \
|
||||||
})
|
})
|
||||||
|
|
||||||
int dce_cond_init(struct dce_cond *cond);
|
int dce_os_cond_init(struct dce_os_cond *cond);
|
||||||
|
|
||||||
void dce_cond_signal(struct dce_cond *cond);
|
void dce_os_cond_signal(struct dce_os_cond *cond);
|
||||||
|
|
||||||
void dce_cond_signal_interruptible(struct dce_cond *cond);
|
void dce_os_cond_signal_interruptible(struct dce_os_cond *cond);
|
||||||
|
|
||||||
int dce_cond_broadcast(struct dce_cond *cond);
|
int dce_os_cond_broadcast(struct dce_os_cond *cond);
|
||||||
|
|
||||||
int dce_cond_broadcast_interruptible(struct dce_cond *cond);
|
int dce_os_cond_broadcast_interruptible(struct dce_os_cond *cond);
|
||||||
|
|
||||||
void dce_cond_destroy(struct dce_cond *cond);
|
void dce_os_cond_destroy(struct dce_os_cond *cond);
|
||||||
|
|
||||||
#endif /* NVDISPLAY_SERVER_OS_COND_LINUX_H */
|
#endif /* DCE_OS_COND_H */
|
||||||
Reference in New Issue
Block a user