小编Tux*_*ude的帖子

如果需要调用copy_to_user,如何使用自旋锁?

我写了一个小驱动程序来读取一些数据并将其提供给用户.我的驱动程序可以被多个应用程序使用,即它是一个可重入的驱动程序,因此使用自旋锁.但是我发现copy_to_user不应该用旋转锁来调用它.char_device_buf在以下代码中是共享数据; 我必须保护它.除了使用自旋锁和使用互斥锁之外,还有其他机制copy_to_user吗?

static ssize_t char_dev_read(struct file *file,
                                char *buf,
                                size_t lbuf,
                                loff_t *ppos)
    {
            int maxbytes; /* number of bytes from ppos to MAX_LENGTH */
            int bytes_to_do; /* number of bytes to read */
            int nbytes; /* number of bytes actually read */

            maxbytes = MAX_LENGTH - *ppos;

            if( maxbytes > lbuf ) bytes_to_do = lbuf;
            else bytes_to_do = maxbytes;

            if( bytes_to_do == 0 ) {
                    printk("Reached end of device\n");
                    return -ENOSPC; /* Causes …
Run Code Online (Sandbox Code Playgroud)

linux locking linux-kernel spinlock

5
推荐指数
1
解决办法
3055
查看次数

Linux时钟架构

在Linux中,如何实现时钟架构.有一个文件include/linux/clkdev.h

struct clk_lookup {
    struct list_head    node;
    const char      *dev_id;
    const char      *con_id;
    struct clk      *clk;
};
Run Code Online (Sandbox Code Playgroud)

各种领域有哪些,它广泛用于时钟架构中arch/arm/Board***/...

arm clock linux-kernel

5
推荐指数
1
解决办法
2922
查看次数

MySQL - 不区分大小写的搜索

为用户构建我的搜索引擎以搜索三个变量$ Title,$ Text和$ Number ...如何在用户搜索时找到所有结果,无论用户在$ query中键入的案例类型(小写或大写) ?

$query = trim ($query);

$raw_results = mysql_query("SELECT * FROM posts
        WHERE (`Number` LIKE '%".$query."%') OR (`Title` LIKE '%".$query."%') OR (`Text` LIKE '%".$query."%') ") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

php mysql search letters

4
推荐指数
2
解决办法
9394
查看次数

bash-completion - 在第一次调用命令时定义的completion函数

我添加了一个新别名scp_using_rsync,它使用rsync通过SSH复制文件并使用某些选项.我想将scp的bash完成链接到此别名.

当我添加这一行时,它可以工作:

complete -o bashdefault -o default -o nospace -F _scp scp_using_rsync 2>/dev/null || complete -o default -o nospace -F _scp scp_using_rsync
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我注意到,_scp在我的bash环境中定义,只有在我尝试使用ssh/scp在该shell中至少执行一次tab-completion之后.所以,如果我直接scp_using_rsync在新的shell中运行,我会得到_scp未找到的错误.

typeset -F在为ssh或scp命令尝试制表符完成之前和之后,新shell中的输出清楚地表明在第一次尝试制表符完成后定义了以下函数:

$ diff ~/.scratch/file1 ~/.scratch/file2
224a225,227
> declare -f _scp
> declare -f _scp_local_files
> declare -f _scp_remote_files
226a230
> declare -f _sftp
230a235,240
> declare -f _ssh
> declare -f _ssh_ciphers
> declare -f _ssh_macs
> declare -f _ssh_options
> declare -f _ssh_suboption
> declare -f …
Run Code Online (Sandbox Code Playgroud)

bash bash-completion

4
推荐指数
1
解决办法
2220
查看次数

了解MSB LSB

我正在努力转换在特定微控制器上运行的程序,并使其适应在树莓派上运行.我已成功地从我一直使用的传感器中提取值,但现在我遇到了一个问题,我认为这是由几行代码引起的,我无法理解.我已经阅读了它们的内容,但仍在摸不着头脑.我相信下面的代码应该修改存储在X,Y,Z变量中的数字,但我不认为这是在我当前的程序中发生的.此外,我不得不改为byte一个INT让程序编译出错.这是我转换的原始代码中未经修改的代码.有人能告诉我这是否甚至修改了数字?

void getGyroValues () {
  byte MSB, LSB;

  MSB = readI2C(0x29);
  LSB = readI2C(0x28);
  x = ((MSB << 8) | LSB);

  MSB = readI2C(0x2B);
  LSB = readI2C(0x2A);
  y = ((MSB << 8) | LSB);

  MSB = readI2C(0x2D);
  LSB = readI2C(0x2C);
  z = ((MSB << 8) | LSB);
}
Run Code Online (Sandbox Code Playgroud)

这是原始的readI2C函数:

int readI2C (byte regAddr) {
    Wire.beginTransmission(Addr);
    Wire.write(regAddr);                // Register address to read
    Wire.endTransmission();             // Terminate request
    Wire.requestFrom(Addr, 1);          // Read a byte
    while(!Wire.available()) { }; …
Run Code Online (Sandbox Code Playgroud)

c raspberry-pi

3
推荐指数
1
解决办法
3316
查看次数

JSF 1.0 vs JSF 2.0

这两个版本的JSF(JSF 1.0和JSF 2.0)有什么区别?由于我是java的新手,我只发现建筑级别的差异.但是,从视角来看,我无法知道它对应用程序开发有多大影响?

此外,强加的MVC与JSF和Spring不同.即使JSF改进了架构,Spring仍然使用得更多.Spring的重要性在上面有什么意义?

java jsf frameworks web-frameworks jsf-2

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

为什么当git clone ssh:// user @ server不能使用git clone user @ server?

我是git的新手.我已在具有SSH访问权限的服务器上创建了一个裸存储库.如果我尝试将其克隆到我的工作站上,我会得到两个不同的结果:

% git clone ssh://me@example.com:git/foo.git

Cloning into 'foo'...
ssh: example.com:git: no address associated with name
fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)

但如果我删除它ssh://,它工作正常:

% git clone me@example.com:git/foo.git
Run Code Online (Sandbox Code Playgroud)

根据Pro Git的书,这些应该是相同的.

是什么赋予了?

git ssh

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

在C中发送图像文件

我使用此代码为我的小HTTP服务器发送二进制文件

/* send binary data to client */

void send_binary(int sock_fd, char *file_name)
{

    int buff_size = 10240;
    char buff[buff_size];
    long file_size;
    FILE *pFile;
    size_t result;
    if ( (pFile = fopen(file_name, "rb")) == NULL){
        error("fopen error\n");
    }

    while( (result = fread(buff, 1, buff_size, pFile)) == buff_size){
        send(sock_fd, buff, buff_size, 0);
        buff[0] = '\0';
    }
    if (result > 0){
        if(feof(pFile)){
            send(sock_fd, buff, result, 0);
        }
        else{
            error("read error\n");
        }
    }
    fclose(pFile);

}
Run Code Online (Sandbox Code Playgroud)

它适用于文本,但不适用于jpeg文件.收到的图像文件已损坏.

c sockets fopen send fread

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