Adding my own BIF
From Erlang Community
(Difference between revisions)
| Revision as of 15:45, 31 July 2006 (edit) Massemanet (Talk | contribs) ← Previous diff |
Revision as of 15:47, 31 July 2006 (edit) (undo) Massemanet (Talk | contribs) Next diff → |
||
| Line 1: | Line 1: | ||
| - | 0) run configure | + | 0) run configure |
| - | 1) add your bifs to erts/emulator/beam/bif.tab | + | 1) add your bifs to erts/emulator/beam/bif.tab |
| e.g. | e.g. | ||
| Line 7: | Line 7: | ||
| bif re:compile/1 | bif re:compile/1 | ||
| - | 2) create a C file | + | 2) create a C file |
| e.g. | e.g. | ||
| erts/emulator/beam/erl_bif_re.c | erts/emulator/beam/erl_bif_re.c | ||
| - | 3) add your C file to erts/emulator/<arch>/Makefile | + | 3) add your C file to erts/emulator/<arch>/Makefile |
| e.g. | e.g. | ||
| RUN_OBJS = $(OBJDIR)/erl_bif_re.o \ | RUN_OBJS = $(OBJDIR)/erl_bif_re.o \ | ||
| - | 4) implement your bifs by stealing bits from existing erl_bif_*.c files | + | 4) implement your bifs by stealing bits from existing erl_bif_*.c files |
| e.g. | e.g. | ||
| BIF_RETTYPE re_grep_2(BIF_ALIST_2){ | BIF_RETTYPE re_grep_2(BIF_ALIST_2){ | ||
| - | + | Eterm result; | |
| - | + | result = magic_function(); | |
| - | + | BIF_RET(result); | |
| } | } | ||
| - | 5) run make; make install | + | 5) run make; make install |
| - | + | steps 0-3 need only be done once. | |
| - | + | note that if you add | |
| bif re:grep/2 | bif re:grep/2 | ||
| - | + | ||
| - | there should be a erl_bif_re.c | + | to bif.tab there should be a |
| - | + | erl_bif_re.c | |
| + | |||
| + | that implements | ||
| BIF_RETTYPE re_grep_2(BIF_ALIST_2); | BIF_RETTYPE re_grep_2(BIF_ALIST_2); | ||
Revision as of 15:47, 31 July 2006
0) run configure
1) add your bifs to erts/emulator/beam/bif.tab
e.g. bif re:grep/2 bif re:compile/1
2) create a C file
e.g. erts/emulator/beam/erl_bif_re.c
3) add your C file to erts/emulator/<arch>/Makefile
e.g. RUN_OBJS = $(OBJDIR)/erl_bif_re.o \
4) implement your bifs by stealing bits from existing erl_bif_*.c files
e.g. BIF_RETTYPE re_grep_2(BIF_ALIST_2){ Eterm result; result = magic_function(); BIF_RET(result); }
5) run make; make install
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);

Digg It
Del.icio.us
Reddit
Facebook
Stumble Upon
Technorati

