考你一下Xlinker和syscall

简介:

Xlinker和syscall

虽然Xlinker和syscall两种没关系,但最近在工作中一起碰到了,琢磨了半天。 下面以笔试题的形式先考考读者:

1. 自己实现一组内存分配和释放函数。

要求能够替代之前的alloc/free/memalign函数。要求:

  • 不修改原始代码,只替换库;
  • debug 版本的时候,调用自己开发的库
  • release 版本,用标志库

2. 在应用程序如何调用底层的系统调用接口。

要求在应用程序直接调用系统调用,来提高性能。

3. 提示

3.1 问题1的提示

  1. 代码中可以通过typeof 定义新函数和之前的malloc/free函数接口和类型一致;

  2. GCC链接选择中可以通过 -Xlinker --wrap=malloc 指定链接到想要的库

  3. GCC链接选择中可以通过-Xlinker --undefined=__wrap_malloc忽略没有定义的函数;

    -Xlinker --wrap=malloc -Xlinker --undefined=wrap_malloc -Xlinker --wrap=free -
    Xlinker --undefined=__wrap_free -Xlinker --wrap=memalign -Xlinker --undefined=
    wrap_memalign -lpthread -laio -lfuse`

3.2 问题2的提示

头文件:

#include <sys/syscall.h>

部分关键代码:

#define UTEX_WAIT      0
#define UTEX_WAKE      1
#define utex(...) syscall(SYS_utex, ##__VA_ARGS__)
ret = utex(&cond->signalledCnt, UTEX_WAKE, 1, NULL, NULL, 0);
















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/2055976 ,如需转载请自行联系原作者


相关文章
|
5月前
|
安全 C语言
C语言第五十五弹---strerror函数
C语言第五十五弹---strerror函数
|
10天前
|
存储 算法 安全
|
10天前
|
算法 程序员 编译器
|
10天前
|
存储 消息中间件 监控
|
3月前
|
C语言
C语言部分期末答案(来自PTA)
C语言部分期末答案(来自PTA)
|
3月前
|
存储 前端开发 rax
【CSAPP】AttackLab
【CSAPP】AttackLab
47 1
|
3月前
|
存储 NoSQL 开发工具
【CSAPP】BombLab
【CSAPP】BombLab
28 0
|
3月前
|
存储 Ubuntu NoSQL
【CSAPP】DataLab
史上最全的CSAPP之DataLab实验讲解汇总(万字详解!超全面!超详细!)收藏这一篇就够了!!!这个精心制作的指南提供了CSAPP DataLab实验的全面解析,涵盖了数以万字计的详细讲解。从概念到实际实验步骤,这篇文章提供了无与伦比的指导,为学习者提供了宝贵的资源。如果您正在学习CSAPP或对计算机体系结构和编程感兴趣,这一份详尽的讲解将成为您不可或缺的参考资料。不仅提供了理论知识,还包含了实际实验和解决问题的技巧,确保您能够深入理解和掌握这一重要主题。
138 0
【CSAPP】DataLab
|
7月前
|
存储 Linux C语言
Linux系统编程(再论execve)
Linux系统编程(再论execve)
29 0
|
8月前
|
Unix
嵌入式工程师考试总结 fork()函数
嵌入式工程师考试总结 fork()函数
25 0