小编Ulf*_*zer的帖子

kbuild如何实际工作?

当我正在开发一个Linux驱动程序时,我已经阅读了有关如何通过本文档编写linux kbuild makefile的内容

我知道kbuild系统使用makefile变量,例如obj-y obj-m来确定要构建的内容以及如何构建.

但我感到困惑的是kbuild系统在哪里真正执行构建过程.总之,如果我有obj-m = a.o,那么kbuild系统在哪里解析obj-m并执行gcc a.c

c linux makefile linux-kernel kbuild

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

C中限制性最强的类型是什么意思?

" C编程语言 "一书在第8.7节" 实例 - 存储分配器 "中讨论了"限制性最强的类型" :

虽然机器各不相同,但每台机器都有一个限制性最强的类型:如果限制性最强的类型可以存储在特定地址,则所有其他类型也可以.在某些机器上,限制最多的类型是a double; 在别人身上,int或是long足够的.

在他们的代码中,union header使用类型对齐long.

限制性最强的是什么意思?它可能是最大的类型(例如double),还是有另一种方法?

c architecture malloc memory-alignment long-integer

12
推荐指数
2
解决办法
1207
查看次数

我可以将代码放在案例之外的交换机中吗?

假设:

switch ( test ) {

  // Set some variables, call some functions ?
  int x = 1 ;
  int y = function(x) ;
  //

  case 1 : 
    // Process for test = 1
    ...
    break;

  case 5 : 
    // Process for test = 5
    ...
    break;

  default : 
    // Process for all other cases.
    ...

}
Run Code Online (Sandbox Code Playgroud)

执行我在第一个之前添加的额外代码是"合法的" case吗?我在例子中从未见过这个.

c c++

9
推荐指数
2
解决办法
4228
查看次数

代码大小:头文件中定义的函数的静态内联与内联

我已经阅读了很多关于在头文件中使用static inlineinline定义函数的文章,以便跨多个翻译单元进行访问.inline由于有外部联系,似乎是正确的方法.

我的问题是inline在.h文件中定义函数时使用说明符导致的结果代码大小:

  • 生成的代码扩展是否inline仍然比引起的更小static inline

  • 为什么extern inline在相应的.c文件中需要声明?

c static inline code-size

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

使用api v2创建facebook事件

是否可以使用Facebook API创建活动?

API v1中有可能:

https://developers.facebook.com/docs/graph-api/reference/v1.0/event#publish

但不是在v2(当前版本):

https://developers.facebook.com/docs/graph-api/reference/v2.0/event#publish

我可以使用v1吗?还有其他方法在PHP应用程序中创建Facebook事件吗?

php facebook-graph-api

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

recvmsg返回EDEADLK?

我有套接字族PF_PACKET类型SOCK_RAW.通过recvmsg和poll()读取的消息.我随后和周期性地得到了recvmsg返回EDEADLK.我尝试用下一个代码调试这个问题.我尝试调查阻止我的套接字描述符的人和方式.可能有人知道其他方法怎么调试这种情况?正如我理解的那样

EDEADLK资源死锁避免了.试图锁定可能导致死锁情况的系统资源.在我的情况下,它是套接字文件描述符锁定问题.分配系统资源套接字文件描述符会导致死锁情况.系统不保证它会注意到所有这些情况.这个错误意味着你很幸运,系统注意到了.

error = recvmsg(fd, &msghdr, flags);
msghdr_flags = msg_hdr.msg_flags;

void recvmsg_errno(int fd, unsigned int msghdr_flags, int flags, int error)
{
    struct flock fl;
    memset(&fl, 0x0, sizeof(fl));

    printf("recvmsg return: %d errno: %d description: %s\n", error, errno,
                    strerror(errno));

    printf("recvmsg flags: %x %d\n", flags, flags);
    if (flags & MSG_ERRQUEUE) printf("MSG_ERRQUEUE\n");
    if (flags & MSG_OOB) printf("MSG_OOB\n");
    if (flags & MSG_PEEK) printf("MSG_PEEK\n");
    if (flags & MSG_TRUNC) printf("MSG_TRUNC\n");
    if (flags & MSG_WAITALL) printf("MSG_WAITALL\n");

    printf("msghdr flags: %x %d\n", msghdr_flags, msghdr_flags);
    if (msghdr_flags & MSG_EOR) printf("MSG_EOR\n");           //indicates …
Run Code Online (Sandbox Code Playgroud)

c sockets linux linux-kernel

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

C++无法使用'char'类型的右值初始化'char*'类型的变量

char *p = 's';
Run Code Online (Sandbox Code Playgroud)

它给出了错误

不能初始化类型的"一个变量char *"类型的右值" char"

有谁可以向我解释一下?非常感谢.

c++

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

UISearchBar textDidChange没有触发

我是iOS编程的新手,我不确定为什么我的textDidChange功能没有触发.在网上搜索了一堆,但无法找出我的代码和其他人之间有什么不同.这是我的.h.m文件对于这个视图控制器的样子:

CategoryTableViewController.h:

#import <UIKit/UIKit.h>
#import <Parse/Parse.h>

@interface CategoryTableViewController : UITableViewController


@property (weak, nonatomic) IBOutlet UIBarButtonItem *btnBack;
@property (weak, nonatomic) IBOutlet UISearchBar *txtSearchBar;

@property (strong,nonatomic) NSArray *allCategories;
@property (strong,nonatomic) NSMutableArray *filteredCategories;

//A stack containing the parent categories used to get to the current category.
@property (strong, nonatomic) NSMutableArray *parentCategories;

@end
Run Code Online (Sandbox Code Playgroud)

来自CategoryTableViewController.m的相关代码:

-(void)txtSearchBar:(UISearchBar*)txtSearchBar textDidChange: (NSString*)text
{

    //do something
}
Run Code Online (Sandbox Code Playgroud)

我使用Xcode的ctrl + click + drag来创建对头文件中搜索栏的引用.我在textDidChange代码的开头放置断点和打印语句,但它们都没有被调用.有任何想法吗?

iphone xcode ios

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

无法使用termios.TIOCSTI伪造终端输入

我见过的大多数代码示例都试图从没有本地回声的stdin读取.为此,他们修改"本地模式"标志以将设置删除为"回声输入字符".我想我可以修改"输入模式"标志TIOCSTI,用于"在输入队列中插入给定字节"..但是,即使我以root身份运行脚本,它也没有任何效果.我写给fd的任何东西似乎都转到终端输出,而不是终端输入.基本上我想要做的就是这个确切的事情,但在纯粹的python中.

"""
termfake.py

Usage: sudo python termfake.py /dev/ttys002

Get the tty device path of a different local termimal by running `tty`
in that terminal.
"""

import sys
import termios

fd = open(sys.argv[1], 'w')
fdno = fd.fileno()

# Returns [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
tatters = termios.tcgetattr(fdno)
print('original', tatters)
tatters[0] = termios.TIOCSTI
print('TIOCSTI', termios.TIOCSTI)

# Set iflag
termios.tcsetattr(fdno, termios.TCSANOW, tatters)

# Verify setting change
with …
Run Code Online (Sandbox Code Playgroud)

python linux terminal

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

如何在Linux内核中加入线程?

主要问题是:如何等待Linux内核中的线程完成?我已经看到了一些有关在Linux内核中处理线程的正确方法的文章,但是我不确定如何等待主线程中的单个线程完成(假设我们需要先完成thread [3]然后继续):

#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kthread.h>
#include <linux/slab.h>

void *func(void *arg) {
    // doing something
    return NULL;
}

int init_module(void) {
    struct task_struct* thread[5];
    int i;
    for(i=0; i<5; i++) {
        thread[i] = kthread_run(func, (void*) arg, "Creating thread");
    }
    return 0;
}

void cleanup_module(void) {
    printk("cleaning up!\n");
}
Run Code Online (Sandbox Code Playgroud)

linux multithreading linux-kernel

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

sql简单查询

昨天我的朋友问了我一个关于这个查询的问题:

select * from user where 1=1 
Run Code Online (Sandbox Code Playgroud)

我说查询不正确,但他说这是正确的.我不明白这个查询是如何正确的.该where 1 = 1部件如何工作?

sql t-sql where

0
推荐指数
2
解决办法
364
查看次数

模数运算符对负数不正确

我遇到了Java模数函数的问题.

由于某种原因,计算机-3 % 26在等于23时等于-3,因为26的最小倍数小于-3是-26并且-3 - -26是23.

此外,如果你添加26到-3,这实际上是添加模数0,那么结果不应该改变,结果应该变为23.任何人都可以解释为什么Java有-3 % 26 == -3而不是23以及如何解决这个问题?

java

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