小编Анд*_*нко的帖子

rcu_read_lock() 实际做什么(Linux 内核)

我正在尝试了解 rcu_read_lock() 同步机制。据我了解,使用的是rcu_read_lock(),这里有多个读线程和一个写线程,读/写相同的数据,在rcu_read_lock()下进行读操作,每个线程复制数据。我写了一个简单的驱动程序来测试这个(read() 和 write() 函数是核心):

#include <linux/module.h>       /* Needed by all modules */
#include <linux/kernel.h>       /* Needed for KERN_INFO */
#include <linux/init.h>         /* Needed for the macros */
#include <linux/rcupdate.h>
#include <linux/preempt.h>
#include <linux/fs.h>
#include <linux/cdev.h>

#define MY_MAJOR 42
#define MY_MAX_MINORS 5

char buf[] = "0";

struct dev_data
{
    struct cdev cdev;
};

struct dev_data devs[MY_MAX_MINORS];

static ssize_t read(struct file *file, char __user *buffer, size_t size, loff_t *offset)
{
    rcu_read_lock();
    while (1)
    {
        printk(KERN_INFO "%s", buf);
    }
    rcu_read_unlock();

    return …
Run Code Online (Sandbox Code Playgroud)

c locking linux-kernel rcu

7
推荐指数
1
解决办法
2005
查看次数

可以在运行时更改 argv(不是由应用程序本身)

我想知道可以main()在运行时更改输入参数。换句话说,在处理数据时,我们是否应该保护应用程序免受可能的TOCTTOU攻击argv?目前,我不知道有什么方法可以更改传入的数据argv,但我不确定这种方法不存在。

UPD:我忘了指出,我很好奇从程序外部更改 argv,因为 argv 是从程序外部接受的。

c c++ security argv tocttou

7
推荐指数
2
解决办法
257
查看次数

如何使用 Python(NumPy、SciPy 等)求解 AX = B 方程,其中 A、X、B 是矩阵且 X 的所有元素必须为非负

我需要使用 Python 求解方程 AX = B,其中 A、X、B 是矩阵,并且 X 的所有值都必须为非负值。

我找到的最好的解决方案是

X = np.linalg.lstsq(A, B, rcond=None)
Run Code Online (Sandbox Code Playgroud)

但结果 X 包含负值。是否有可能获得没有负值的解决方案?提前致谢!

python linear-equation numpy scipy

2
推荐指数
1
解决办法
1487
查看次数

标签 统计

c ×2

argv ×1

c++ ×1

linear-equation ×1

linux-kernel ×1

locking ×1

numpy ×1

python ×1

rcu ×1

scipy ×1

security ×1

tocttou ×1