小编sig*_*ice的帖子

mmap(2)vs mmap(3)

有谁知道mmap(2)和之间的区别mmap(3)是什么?第3节描述为"本章描述了除第2章中描述的库函数之外的所有库函数,它们实现了系统调用." 不mmap(3)执行系统调用?

阅读这两个手册页,我看到它mmap(2)似乎接受了比它更多种各样的标志mmap(3),并声称能够映射设备I/O空间. mmap(3)声称能够将"共享内存对象"和"类型化内存对象"映射到文件中,但未提及设备I/O.

由于这两个函数具有相同的名称,我甚至不确定如何选择一个而不是另一个.

linux memory mmap

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

%C在GCC内联汇编代码中的含义是什么?

我想了解哪些来源于此内联汇编代码_hypercall0 在这里.

asm volatile ("call hypercall_page+%c[offset]" \
        : "=r" (__res) \
        : [offset] "i" (__HYPERVISOR_##name * sizeof(hypercall_page[0])) \
        : "memory", "edi", "esi", "edx", "ecx", "ebx", "eax") 
Run Code Online (Sandbox Code Playgroud)

我无法找到%c第一行含义的信息.我没有在GCC手册最明显的部分找到任何信息,但这解释了%[name],但没有%c[name].还有其他我应该看的地方吗?

c xen assembly gcc inline-assembly

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

ifreq的ifr_names不正确?

以下函数确定给定字符串是否为有效的网络设备名称.


int isValidNDevice(char *name) {

    char data[4096];
    struct ifconf ifc;
    struct ifreq *ifr;
    int sk;
    int nIntfcs;

    sk = socket(AF_INET, SOCK_DGRAM, 0);
    if(sk < 0)
    {
        perror("socket");
        return 0;
    }

    ifc.ifc_len = sizeof(data);
    ifc.ifc_buf = (caddr_t)data;
    if(ioctl(sk, SIOCGIFCONF, &ifc) < 0)
    {
        perror("ioctl(SIOCGIFCONF)");
        return 0;
    }

    ifr = (struct ifreq*)data;
    nIntfcs = ifc.ifc_len / sizeof(struct ifreq);
    for(int i=0; i < nIntfcs; i++)
    {
        safe_printf("%s\n", (&ifr[i])->ifr_name);
        if (!strcmp((&ifr[i])->ifr_name, name)) {
            return 1;
        }
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行此功能时,我收到以下输出.


lo0的

stf0

2>取值 …

c sockets macos

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

ssh服务器C库?

我正在寻找一个实现 ssh 服务器端的 C 库。特别是,我只对提供端口转发的子集感兴趣。到目前为止我发现的(libssh2、NetSieben 等)似乎只实现了客户端。

c ssh

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

哪种32位/ 64位CPU架构具有最简单的指令集?

我觉得处理32位PowerPC汇编代码非常舒服,但在尝试理解x86代码时我完全迷失了.ARM,MIPS,Sparc等其他常见架构是否比x86指令集更容易?

assembly powerpc

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

有谁知道从哪里获得实际的Cray PVP代码?

我想为其中一个较旧的Crays编写一个模拟器,但我遇到了一个绊脚石.我似乎无法找到任何实际的代码.(我认为哪种方式有道理,其中大部分都会被用于防御之类......)有谁知道我在哪里可以找到什么东西?二进制或来源,这一切都很好.我最喜欢的是COS的二进制文件.提前感谢.

assembly emulation cray

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

如何在二叉搜索树中找到节点的第n个祖先?

我在面试时被问到这个问题.这是我的O(log n)解决方案.

找到节点的深度.重复搜索,但停在depth - n.

没有第二次通过,有没有办法做到这一点?

c algorithm binary-tree

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

C中有限的递归?

我跑了这个程序,然后输出

...

65088
65089
65090

然后它停了下来.Windows 7称a.exe停止工作.这是代码:

#include <stdio.h>

void go(void);

main()
{
    go();
}

void go(void)
{
    static int i = 0;
    printf("%d\n", i++);
    go();
}
Run Code Online (Sandbox Code Playgroud)

我认为这个程序应该由于递归而无限期地打印数字,但它会在65090停止!C代码是用gcc编译的.有任何想法吗?

c

6
推荐指数
3
解决办法
542
查看次数

作为vim用户,我如何习惯Xcode?

我一生中大部分时间都是Vim用户.我已经使用带有viper/vimpulse的Emacs几年了.在OS X Lion上使用Xcode 4来解决我的Vi习惯和达到合理的生产力水平的最佳方法是什么?我不想使用外部编辑器,因为我宁愿完全沉浸在Xcode中.

vim xcode editor

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

在PowerPC中生成未对齐的内存访问异常

我有一个适用于PowerPC的巨大源代码.我需要将它移植到ARM.但是,ARM在未对齐的内存访问上生成h/w异常.所以,我想找到所有可能发生未对齐内存访问异常的实例.我考虑过以下几种选择.

  1. 在gcc中使用-Wcast-align会对未对齐访问产生警告.
  2. 使PowerPC生成未对齐的异常.对于ARM,有一个选项/ proc/cpu/alignment,用户可以通过该选项决定如何处理异常.但是,PowerPC没有这样的选择.

我的问题是,

  1. 有没有办法让PowerPC生成未对齐的内存访问异常?
  2. 有没有更好的方法来找出源代码中所有出现的未对齐内存访问?

c gcc powerpc memory-alignment embedded-linux

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