原文地址:
http://www.trapexit.org/Adding_my_own_BIF
Adding my own BIF
From Erlang Community
caveat
unless you really know what you're doing, you'll be better off using a linked-in driver or a port.
steps
1. run configure
2. add your bifs to erts/emulator/beam/bif.tab
bif re:grep/2 bif re:compile/1
3. create a C file
erts/emulator/beam/erl_bif_re.c
4. add your C file to erts/emulator/<arch>/Makefile
RUN_OBJS = $(OBJDIR)/erl_bif_re.o \
5. implement your bifs by stealing bits from existing erl_bif_*.c files
BIF_RETTYPE re_grep_2(BIF_ALIST_2){
Eterm result;
result = magic_function();
BIF_RET(result);
}
6. run make; make install
notes
* steps 0-3 need only be done once.
* note that if you add
bif re:grep/2
to bif.tab there should be a erl_bif_re.c that implements
BIF_RETTYPE re_grep_2(BIF_ALIST_2);
为什么要用bif呢? bif比驱动或者port的好处是 bif支持trap, 所以能够让cpu计算平均在各个进程分配,这个网络程序很重要的一个要求. 没有这个特性一个费时的操作会把整个调度器拖死,其他的进程就谈不上什么响应了。下篇文章教你如何写带trap功能的bif。
分享到:
相关推荐
Adding New Hardware for Avaya
A tutorial on adding columns to Explorer’s details view via a column handler shell extension.(13KB)
Taking the pain out of adding a horizontal scrollbar to a listbox.给列表框添加水平滚动条
局部指数稳定性定理及证明、中值定理、加权积分器详细介绍
Adding white noise to a signal with fixed SNR
#include "stdafx.h" #include "iostream" #include "fstream" #include "algorithm" #include "string" #include "vector" #include "cmath" using namespace std; int main(int argc, char* argv[]) ...
Adding Classifications to Web Services.
Adding a search facility to your website
下拉菜单 Adding Drop down navigation 简单范例
Adding Password Management to Your Templates(cloudstack)
most simple adding for those idiot
Adding a Node to a 10g RAC Cluster 希望对那些ORACLE使用者有点作用
Adding a Build Banner to ASP.NET Pages。
Simple plug-in architecture for adding your own custom extensions Enterprise Data Integration server providing security integration, scheduling, and robust content management including full revision ...
Simple plug-in architecture for adding your own custom extensions Enterprise Data Integration server providing security integration, scheduling, and robust content management including full revision ...
Simple plug-in architecture for adding your own custom extensions Enterprise Data Integration server providing security integration, scheduling, and robust content management including full revision ...
Simple plug-in architecture for adding your own custom extensions Enterprise Data Integration server providing security integration, scheduling, and robust content management including full revision ...
Simple plug-in architecture for adding your own custom extensions Enterprise Data Integration server providing security integration, scheduling, and robust content management including full revision ...
Simple plug-in architecture for adding your own custom extensions Enterprise Data Integration server providing security integration, scheduling, and robust content management including full revision ...