本文整理汇总了C++中read_lock_irqsave函数的典型用法代码示例。如果您正苦于以下问题:C++ read_lock_irqsave函数的具体用法?C++ read_lock_irqsave怎么用?C++ read_lock_irqsave使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了read_lock_irqsave函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: zfcp_erp_wakeup
static void zfcp_erp_wakeup(struct zfcp_adapter *adapter)
{
unsigned long flags;
read_lock_irqsave(&zfcp_data.config_lock, flags);
read_lock(&adapter->erp_lock);
if (list_empty(&adapter->erp_ready_head) &&
list_empty(&adapter->erp_running_head)) {
atomic_clear_mask(ZFCP_STATUS_ADAPTER_ERP_PENDING,
&adapter->status);
wake_up(&adapter->erp_done_wqh);
}
read_unlock(&adapter->erp_lock);
read_unlock_irqrestore(&zfcp_data.config_lock, flags);
}
示例2: adf_interface_modelist
/**
* adf_interface_modelist - get interface's modelist
*
* @intf: the interface
* @modelist: storage for the modelist (optional)
* @n_modes: length of @modelist
*
* If @modelist is not NULL, adf_interface_modelist() will copy up to @n_modes
* modelist entries into @modelist.
*
* Returns the length of the modelist.
*/
size_t adf_interface_modelist(struct adf_interface *intf,
struct drm_mode_modeinfo *modelist, size_t n_modes)
{
unsigned long flags;
size_t retval;
read_lock_irqsave(&intf->hotplug_modelist_lock, flags);
if (modelist)
memcpy(modelist, intf->modelist, sizeof(modelist[0]) *
min(n_modes, intf->n_modes));
retval = intf->n_modes;
read_unlock_irqrestore(&intf->hotplug_modelist_lock, flags);
return retval;
}
示例3: ib_get_cached_lmc
int ib_get_cached_lmc(struct ib_device *device,
u8 port_num,
u8 *lmc)
{
unsigned long flags;
int ret = 0;
if (!rdma_is_port_valid(device, port_num))
return -EINVAL;
read_lock_irqsave(&device->cache.lock, flags);
*lmc = device->cache.ports[port_num - rdma_start_port(device)].lmc;
read_unlock_irqrestore(&device->cache.lock, flags);
return ret;
}
示例4: read_lock_irqsave
/**
* zfcp_get_unit_by_lun - find unit in unit list of port by FCP LUN
* @port: pointer to port to search for unit
* @fcp_lun: FCP LUN to search for
*
* Returns: pointer to zfcp_unit or NULL
*/
struct zfcp_unit *zfcp_get_unit_by_lun(struct zfcp_port *port, u64 fcp_lun)
{
unsigned long flags;
struct zfcp_unit *unit;
read_lock_irqsave(&port->unit_list_lock, flags);
list_for_each_entry(unit, &port->unit_list, list)
if (unit->fcp_lun == fcp_lun) {
if (!get_device(&unit->dev))
unit = NULL;
read_unlock_irqrestore(&port->unit_list_lock, flags);
return unit;
}
read_unlock_irqrestore(&port->unit_list_lock, flags);
return NULL;
}
示例5: ib_get_cached_lmc
int ib_get_cached_lmc(struct ib_device *device,
u8 port_num,
u8 *lmc)
{
unsigned long flags;
int ret = 0;
if (port_num < start_port(device) || port_num > end_port(device))
return -EINVAL;
read_lock_irqsave(&device->cache.lock, flags);
*lmc = device->cache.lmc_cache[port_num - start_port(device)];
read_unlock_irqrestore(&device->cache.lock, flags);
return ret;
}
示例6: mt_sched_debug_show
static int mt_sched_debug_show(struct seq_file *m, void *v)
{
struct task_struct *g, *p;
unsigned long flags;
SEQ_printf(m, "=== mt Scheduler Profiling ===\n");
SEQ_printf(m,
"\nrunnable tasks:\n"
" task PID switches prio"
" exec-runtime sum-exec sum-sleep\n"
"------------------------------------------------------"
"----------------------------------------------------\n");
read_lock_irqsave(&tasklist_lock, flags);
do_each_thread(g, p) {
print_task(m, p);
} while_each_thread(g, p);
示例7: ksb_debug_show
static ssize_t ksb_debug_show(struct seq_file *s, void *unused)
{
unsigned long flags;
struct ks_bridge *ksb = s->private;
int i;
read_lock_irqsave(&ksb->dbg_lock, flags);
for (i = 0; i < DBG_MAX_MSG; i++) {
if (i == (ksb->dbg_idx - 1))
seq_printf(s, "-->%s\n", ksb->dbgbuf[i]);
else
seq_printf(s, "%s\n", ksb->dbgbuf[i]);
}
read_unlock_irqrestore(&ksb->dbg_lock, flags);
return 0;
}
示例8: hp_sdc_spin_ibf
/* Care must be taken to only invoke hp_sdc_spin_ibf when
* absolutely needed, or in rarely invoked subroutines.
* Not only does it waste CPU cycles, it also wastes bus cycles.
*/
static inline void hp_sdc_spin_ibf(void) {
unsigned long flags;
rwlock_t *lock;
lock = &hp_sdc.ibf_lock;
read_lock_irqsave(lock, flags);
if (!hp_sdc.ibf) {
read_unlock_irqrestore(lock, flags);
return;
}
read_unlock(lock);
write_lock(lock);
while (sdc_readb(hp_sdc.status_io) & HP_SDC_STATUS_IBF) {};
hp_sdc.ibf = 0;
write_unlock_irqrestore(lock, flags);
}
示例9: read_lock_irqsave
/**
* zfcp_get_port_by_wwpn - find port in port list of adapter by wwpn
* @adapter: pointer to adapter to search for port
* @wwpn: wwpn to search for
*
* Returns: pointer to zfcp_port or NULL
*/
struct zfcp_port *zfcp_get_port_by_wwpn(struct zfcp_adapter *adapter,
u64 wwpn)
{
unsigned long flags;
struct zfcp_port *port;
read_lock_irqsave(&adapter->port_list_lock, flags);
list_for_each_entry(port, &adapter->port_list, list)
if (port->wwpn == wwpn) {
if (!get_device(&port->dev))
port = NULL;
read_unlock_irqrestore(&adapter->port_list_lock, flags);
return port;
}
read_unlock_irqrestore(&adapter->port_list_lock, flags);
return NULL;
}
示例10: find_safe_buffer
/* determine if a buffer is from our "safe" pool */
static inline struct safe_buffer *
find_safe_buffer(struct dmabounce_device_info *device_info, dma_addr_t safe_dma_addr)
{
struct safe_buffer *b, *rb = NULL;
unsigned long flags;
read_lock_irqsave(&device_info->lock, flags);
list_for_each_entry(b, &device_info->safe_buffers, node)
if (b->safe_dma_addr == safe_dma_addr) {
rb = b;
break;
}
read_unlock_irqrestore(&device_info->lock, flags);
return rb;
}
示例11: mlx4_en_fill_hwtstamps
void mlx4_en_fill_hwtstamps(struct mlx4_en_dev *mdev,
struct skb_shared_hwtstamps *hwts,
uint64_t timestamp)
{
panic("Disabled");
#if 0 // AKAROS_PORT
unsigned long flags;
uint64_t nsec;
read_lock_irqsave(&mdev->clock_lock, flags);
nsec = timecounter_cyc2time(&mdev->clock, timestamp);
read_unlock_irqrestore(&mdev->clock_lock, flags);
memset(hwts, 0, sizeof(struct skb_shared_hwtstamps));
hwts->hwtstamp = ns_to_ktime(nsec);
#endif
}
示例12: ib_get_cached_subnet_prefix
int ib_get_cached_subnet_prefix(struct ib_device *device,
u8 port_num,
u64 *sn_pfx)
{
unsigned long flags;
int p;
if (!rdma_is_port_valid(device, port_num))
return -EINVAL;
p = port_num - rdma_start_port(device);
read_lock_irqsave(&device->cache.lock, flags);
*sn_pfx = device->cache.ports[p].subnet_prefix;
read_unlock_irqrestore(&device->cache.lock, flags);
return 0;
}
示例13: ehci_hsic_msm_ctrl_events_show
static int ehci_hsic_msm_ctrl_events_show(struct seq_file *s, void *unused)
{
unsigned long flags;
unsigned i;
read_lock_irqsave(&dbg_hsic_ctrl.lck, flags);
i = dbg_hsic_ctrl.idx;
for (dbg_inc(&i); i != dbg_hsic_ctrl.idx; dbg_inc(&i)) {
if (!strnlen(dbg_hsic_ctrl.buf[i], DBG_MSG_LEN))
continue;
seq_printf(s, "%s\n", dbg_hsic_ctrl.buf[i]);
}
read_unlock_irqrestore(&dbg_hsic_ctrl.lck, flags);
return 0;
}
示例14: pm_send_to_host
int
pm_send_to_host(PM_MESSAGE opcode, void *msg, size_t len)
{
// FUNCTION_ENTRY;
int err = 0;
size_t psize = sizeof(pm_msg_header) + len;
char *payload;
unsigned long flags;
if (pm_scif->con_state != PM_CONNECTED) {
err = -EINVAL;
goto error;
}
if (!(payload = kmalloc(psize, GFP_ATOMIC))) {
err = -ENOMEM;
goto error;
}
read_lock_irqsave(&pmscif_send,flags);
if (atomic_xchg(&epinuse,1) != 0) {
read_unlock_irqrestore(&pmscif_send,flags);
kfree(payload);
return -1;
}
((pm_msg_header*)payload)->opcode = opcode;
((pm_msg_header*)payload)->len = len;
if (len)
memcpy((char*)payload + sizeof(pm_msg_header), msg, len);
//0 for non blocking
if ((err = scif_send(pm_scif->ep, payload, psize, 0)) < 0) {
PM_DB("scif_recv failed\n");
}
atomic_set(&epinuse,0);
//for (i = 0; i < psize; i++)
// printk(KERN_ALERT" buff: %X\n", payload[i]);
read_unlock_irqrestore(&pmscif_send,flags);
kfree(payload);
// FUNCTION_EXIT;
error:
return err;
}
示例15: do_gettimeofday
/*
* This version of gettimeofday has near microsecond resolution.
*/
void do_gettimeofday(struct timeval *tv)
{
unsigned long flags;
unsigned long usec, sec;
read_lock_irqsave(&xtime_lock, flags);
usec = 0;
sec = xtime.tv_sec;
usec += (xtime.tv_nsec / 1000);
read_unlock_irqrestore(&xtime_lock, flags);
while (usec >= 1000000) {
usec -= 1000000;
sec++;
}
tv->tv_sec = sec;
tv->tv_usec = usec;
}