Articles of c + +

这两个函数有什么区别:`ioremap_uc()`和`set_memory_uc`?

当我想将内存区域标记为Write Combined(禁用可caching和使用BIU)或者通过设置PAT(页面属性表 – PIT中的7bit)不可caching时,那么我必须使用什么,以及这两个函数之间有什么区别? 驱动程序应该使用ioremap_[uc|wc]访问具有[uc | wc]访问types的PCI BAR: void __iomem * ioremap_wc(resource_size_t phys_addr,unsigned long size) 驱动程序应该使用set_memory_[uc|wc]设置RAM范围的访问types: int set_memory_uc(unsigned long addr,int numpages) 取自: http : //lwn.net/Articles/278994/ 为什么我不能使用PCI BAR和RAM范围的单一function? 说明: ioremap_uc()获取物理地址和返回虚拟地址设置不可caching,与set_memory_uc()获得虚拟地址,并设置这些页面的Uncacheable? 这些代码是否相同? void* virt_ptr = ioremap_uc(phys_ptr, size); 和 void* virt_ptr = ioremap(phys_ptr, size); const int page_size = 4096; set_memory_uc(virt_ptr, size/page_size);

dynamic添加条目到sysctl

考虑这个代码: int procmon_state = 0; static struct ctl_table_header *procmon_table_header; static ctl_table state_table[] = { { .procname = "state", .mode = 0666, .proc_handler = &proc_dointvec_minmax, .data = &procmon_state, .maxlen = sizeof(int), .extra1 = "\x00\x00\x00\x00" /*0*/, .extra2 = "\x01\x00\x00\x00" /*1*/ }, { 0 } }; static ctl_table procmon_table[] = { { .procname = "procmon", .mode = 0555, […]

如何解决在Linux 32位机上的REG_EIP未声明(首次在此函数中使用)错误?

我在用C语言编写的用gcc编写的信号处理器程序时遇到了错误,在发生分段错误后显示转储的寄存器值。 当我尝试使用代码访问它时: void print_registers(FILE *fd, ucontext_t *ctx, bool fpu = false) { const char *flags_str[] = { "CF", 0, "PF", 0, "AF", 0, "ZF", "SF", "TP", "IF", "DF", "OF", 0, 0, "NT", 0, "RF", "VM", "AC", "VIF", "VIP", "ID" }; greg_t *regs = ctx->uc_mcontext.gregs; void *eip[1] = { (void*)regs[REG_EIP] }; char **symbol = backtrace_symbols(eip, 1); […]

在Linux上编译C#+ WPF以便在Windows上运行

我有一个C#应用程序,其中一些部分是使用WPF(Mono不支持)编写的。 有没有可能在Linux上编译这个应用程序? 最终,应用程序将在Windows上运行,但它是一个更大的框架的一部分,我们的整个构build过程运行在Linux上,所以我希望能够在Linux上编译C#应用程序。

Xlib:closures窗口总是会导致致命的IO错误?

我不知道为什么会发生这种情况,但是我在C ++中使用Xlib创build的任何窗口在尝试closures时都会向terminal输出一个错误,并使用Xbutton。 我可以没有错误地以编程方式closures它,它只是Xbutton。 错误如下: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0" after 483 requests (483 known processed) with 0 events remaining. 请求数量每次都是不同的,但总是有0个事件。 为什么会这样呢? 原因似乎并不是我的代码,因为它不pipe是什么,也不向队列发送closures事件。 我试过拦截Atom WM_WINDOW_DELETE,并且在closures窗口时,它不会运行在期望的代码上。 编辑:添加事件循环代码。 while(XPending(display)) { XNextEvent(display, &event); pthread_mutex_unlock(&mutex); if(event.type == Expose) { XWindowAttributes getWindowAttributes; pthread_mutex_lock(&mutex); XGetWindowAttributes(display, window, &getWindowAttributes); if(state.currentState == STATE_NORMAL) { state.normX = getWindowAttributes.x; state.normY […]

是否有可能在C ++中禁用stderr?

我用libxml2编写了一个用于linuxparsing的程序。 虽然它的工作,HTMLparsing器写了很多错误到stderr。 是否有可能完全禁用stderr(或将其redirect到/ dev / null而不必使用redirectshell脚本运行)? 我可以生活在不得不写我自己的错误标准输出,我只是想摆脱这些错误。

如何杀死一个PID不断变化的进程?

我知道我可以使用这个技巧if (fork()) exit(0); 改变当前进程的PID。 所以,下面的程序会有一个很快改变的pid。 如何杀死这样的进程? 有没有比执行大量killall procname更好的方法,直到能够在fork之前运行kill() ? 我知道这不是一个“进程”,但是每个进程只运行几微秒。 #include <unistd.h> #include <stdlib.h> #include <stdio.h> int main() { pid_t self = getpid(); while (1) { if (fork()) exit(0); if (self + 10000 < getpid()) break; // Just to kill it after some time usleep(1000); } return 0; } 我发现列出进程的唯一方法是执行ps -A | grep procname ps […]

Linux C ++如何以编程方式获取LAN上所有适配器的MAC地址

如何在我的(小型)本地networking上使用C或C ++ PROGRAM (无命令行)来获取MAC地址(如果IP地址是“免费”的话,我也会使用它们)。 这是一个embedded式的Busybox Linux,所以我需要一个简单的答案,希望不需要移植一些库。 我没有libnet或libpcap。 如果DHCP主机,arpcaching似乎从不包含任何东西,但不包含MAC。

无法运行编译的文件 – bash:./a.out:权限被拒绝。 (我试过chmod)

我使用cc test.c编译了我的C源代码,并生成了a.out文件。 但是,当我运行它,我得到这个错误 – bash: ./a.out: Permission denied 我的源不在主目录中,它位于不同的FAT-32分区上,所以我使用以下命令安装了代码所在的驱动器 – $ udisks –mount /dev/sda7 –mount-options umask=022 Mounted /org/freedesktop/UDisks/devices/sda7 at /media/48E9-FD53 $ cd /media/48E9-FD53/C 然后我使用cc编译我的代码 我也试过gcc 。 但是我仍然得到相同的错误。 然后我做了 – chmod +x a.out ,仍然是同样的问题。 还有( chmod 755 a.out )和chmod u+x a.out 。 我也试着用sudo编译和执行程序。 我也试过 – sudo chown sannidhya:sannidhya a.out 。 我尝试了Googlesearch后发现的所有内容,但仍无法使其正常工作。 我如何运行.out文件(不移动到主目录)? 注 – 我正在使用Ubuntu 12.04 […]

确定客户端绑定的TCP端口号

我创build了一个TCP套接字,而不打扰绑定到[socket.sin_port = 0]的端口号。 不过后来如果我想打印客户端的端口号,我该怎么做呢? 客户端C应用程序(在Linux上)创build了许多连接到服务器的客户端。 为了debugging问题,我捕捉飘渺的stream量。 我想在问题出现时打印日志中的端口号,以便轻松过滤。 任何帮助,将不胜感激。 -Prabhu