小编caf*_*caf的帖子

如何在Linux中检索当前的处理器时间?

我在嵌入式设备中使用C语言和Linux作为我的编程平台.

我的问题是,如何正确检索当前处理器时间(勾选).我在time.h中使用clock()函数,似乎我得到了不一致的值.

谢谢.

c linux

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

为现有的全局内存阵列分配更多内存

是否可以将内存添加到全局内存中先前分配的数组?

我需要做的是:

//cudamalloc memory for d_A
int n=0;int N=100;
do
{
 Kernel<<< , >>> (d_A,n++);
 //add N memory to d_A
 while(n!=5)}
Run Code Online (Sandbox Code Playgroud)

做另一个cudamalloc删除以前分配的数组的值?在我的情况下,应该保留以前分配的数组的值...

memory-management cuda

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

IPv6:connect()总是以errno 22失败

操作系统是Ubuntu.我正在为基本的IPv6操作做一个简单的测试.PC通过集线器与IP摄像机(支持IPv6)连接.ping6测试成功.

$ ping6 -I eth1 fe80::240:8cff:fe94:451e
PING fe80::240:8cff:fe94:451e(fe80::240:8cff:fe94:451e) from fe80::224:8cff:fe90:ad3b eth1: 56 data bytes
64 bytes from fe80::240:8cff:fe94:451e: icmp_seq=1 ttl=64 time=3.86 ms
64 bytes from fe80::240:8cff:fe94:451e: icmp_seq=2 ttl=64 time=0.471 ms
Run Code Online (Sandbox Code Playgroud)

代码如下:

#include <linux/in6.h>
#include <sys/socket.h>
#include <stdio.h>
#include <errno.h>

void main()
{
  int s, ret, err;
  struct sockaddr_in6 addr;

  s = socket(AF_INET6, SOCK_STREAM, 0);
  addr.sin6_family = AF_INET6;
  addr.sin6_port = htons(554);
  addr.sin6_flowinfo = 0;
  addr.sin6_scope_id = 0;
  addr.sin6_addr.s6_addr[0] = 0xfe;
  addr.sin6_addr.s6_addr[1] = 0x80;
  addr.sin6_addr.s6_addr[2] = 0x00;
  addr.sin6_addr.s6_addr[3] = 0x00;
  addr.sin6_addr.s6_addr[4] = …
Run Code Online (Sandbox Code Playgroud)

c linux ipv6 link-local

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

堆栈粉碎代码无法在Linux内核2.6.38.7上运行...请帮忙

我一直在阅读"Shellcoders手册",并指的是这个链接,用于实现堆栈溢出.但似乎Linux内核开发人员已经使内核非常安全.这是我的问题.

1)这段代码

void function(int a, int b, int c) {
   char buffer1[8];
   char buffer2[10];
   int* ret;

   ret = buffer1 + 6;
   *ret+=8;
}

void main() {
  int x;

  x = 0;
  function(1,2,3);
  x = 1;
  printf("%d\n",x);
}
Run Code Online (Sandbox Code Playgroud)

给出输出

$ cc smash.c
smash.c: In function ‘function’:
smash.c:7:8: warning: assignment from incompatible pointer type
$ ./a.out
1
Run Code Online (Sandbox Code Playgroud)

用的线*ret+=8*ret=8给出以下输出

*** stack smashing detected ***: ./a.out terminated
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x50)[0xa86df0]
/lib/i386-linux-gnu/libc.so.6(+0xe5d9a)[0xa86d9a]
./a.out[0x8048448]
./a.out[0x8048477]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x9b7e37]
./a.out[0x8048381]
======= Memory …
Run Code Online (Sandbox Code Playgroud)

linux stack-overflow stack gcc

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

标志 PF_MEMALLOC 有什么用

当我在Linux中的一个设备驱动程序中浏览一些代码时,我发现该标志PF_MEMALLOC正在线程(进程)中设置。我在头文件中找到了这个标志的定义,它说“分配内存”

#define PF_MEMALLOC     0x00000800      /* Allocating memory */
Run Code Online (Sandbox Code Playgroud)

所以,我的疑问是,当在进程/线程之类的代码中设置这个标志时,它到底有什么用途current->flags |= PF_MEMALLOC;

scheduler linux-device-driver linux-kernel

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

将加密逗号分隔的ID列表使其变小以适应cookie?

说我想将ID存储在cookie中:

123,1232,3443,2343,2344422,2342

看到一个cookie有4kb限制(或其他),加密该值允许以某种方式更多的存储?

如果是这样,哪种加密最好?(并不是真的担心安全性,只想用更少的足迹存储更多)

c# compression encryption cookies

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

从内核模块的结构中删除填充

我正在使用标准命令编译一个内核模块,其中包含大小为 34 的结构。

make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
Run Code Online (Sandbox Code Playgroud)

将以sizeof(some_structure)36 而不是 34 的形式出现,即编译器正在填充结构。

如何删除此填充?

运行make V=1显示 gcc 编译器选项传递为

make -I../inc -C /lib/modules/2.6.29.4-167.fc11.i686.PAE/build M=/home/vishal/20100426_eth_vishal/organised_eth/src modules

make[1]: Entering directory `/usr/src/kernels/2.6.29.4-167.fc11.i686.PAE'
test -e include/linux/autoconf.h -a -e include/config/auto.conf || (  \
 echo;        \
 echo "  ERROR: Kernel configuration is invalid.";  \
 echo "         include/linux/autoconf.h or include/config/auto.conf are missing."; \
 echo "         Run 'make oldconfig && make prepare' on kernel src to fix it."; \
 echo;        \
 /bin/false)

mkdir -p /home/vishal/20100426_eth_vishal/organised_eth/src/.tmp_versions ; …
Run Code Online (Sandbox Code Playgroud)

gcc makefile packing kernel-module linux-kernel

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

strstr()函数重叠字符串搜索

我正在尝试使用strstr函数计算字符串'TT'出现在DNA序列ATGCTAGTATTTGGATAGATAGATAGATAGATAGATAGATAAAAAAATTTTTTTT中的次数,而不计算任何'T'两次.它应该出现5个'TT'实例,但我的功能是给我9,如果你重叠'TT',你会得到的.我该如何解决这个问题,以便只计算'TT'的每个实例并且不计算两次T?这是我的计划:

/***************************************************************************************/
#include <iostream>    
#include <cstring>      
#include <iomanip>

using namespace std;

    //FUNCTION PROTOTYPES
     int overlap(char *ptr1, char *ptr2);

int main()
{

    //Declare and initialize objects
   int count(0); // For DNA sequence

        //DNA SEQUENCE
    char DNA_sequence[] = "ATGCTAGTATTTGGATAGATAGATAGATAGATAGATAGATAAAAAAATTTTTTTT";
    char thymine_group[] = "TT";
    char *ptr1(DNA_sequence), *ptr2(thymine_group);

//Send QUOTE to function
count = overlap(ptr1, ptr2);

   //Print number of occurences.
    cout << "'TT' appears in DNA sequence " << count << " times" << endl;
    return 0;
}

//FUNCTION 1 USING CHAR ARRAYS AND …
Run Code Online (Sandbox Code Playgroud)

c++ string overlap strstr

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

我该如何优化这个mips代码?

下面我尝试使用bne循环100次,但我想修改代码,以便它运行得更快.也许以某种方式删除nop?我该如何改进这段代码?

addi $1, $0, 100
addi $2, $0, 0
lw $3, 0($4)
add $2, $2, $3
addi $4, $4, 4
addi $1, $1, -1
bne $1, $0, -5
nop
Run Code Online (Sandbox Code Playgroud)

assembly loops mips

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

简单的循环,哪一个我会获得更多的性能,哪一个是推荐的?在循环内部或外部定义变量?

循环外变量

int number = 0;
for(int i = 0; i < 10000; i++){
     number = 3 * i;
     printf("%d",number);
}
Run Code Online (Sandbox Code Playgroud)

或循环内部的变量

for(int i = 0; i < 10000; i++){
     int number = 3 * i;
     printf("%d",number);
}
Run Code Online (Sandbox Code Playgroud)

建议使用哪一个,哪个性能更好?

编辑:

这只是展示我的意思的一个例子,我想知道的是,如果在循环中定义变量而在循环外部意味着同样的事情,或者存在差异.

c c++ algorithm

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