zoukankan      html  css  js  c++  java
  • The layout of PID & PORT in the ERTS

    转载请注明,来自:http://blog.csdn.net/skyman_2001

    我在调试erts时发现PID和PORT ID在底层是个整型,但是在erlang层的表示是<A.B.C>和#Port<A.B>的格式,它们之间是怎么转换的呢?通过grep发现在erts/emulator/beam/erl_term.h里有关于PID和PORT的layout说明,这里只谈论本节点情况下的layout:

     *  PID layout (internal pids):
     
        |3 3 2 2 2 2 2 2|2 2 2 2 1 1 1 1|1 1 1 1 1 1    |               |
        |1 0 9 8 7 6 5 4|3 2 1 0 9 8 7 6|5 4 3 2 1 0 9 8|7 6 5 4 3 2 1 0|
        |               |               |               |               |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |n n n n n n n n n n n n n n n n n n n n n n n n n n n n|0 0|1 1|
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
       n : number

     *  PORT layout (internal ports):
     
       |3 3 2 2 2 2 2 2|2 2 2 2 1 1 1 1|1 1 1 1 1 1    |               |
       |1 0 9 8 7 6 5 4|3 2 1 0 9 8 7 6|5 4 3 2 1 0 9 8|7 6 5 4 3 2 1 0|
       |               |               |               |               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |n n n n n n n n n n n n n n n n n n n n n n n n n n n n|0 1|1 1|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
       n : number

    示例:
    1. pid为3683,二进制表示为111001100011,去掉tag,则为11100110,换算成十进制则为230,则外部表示则为<0.230.0>;
    2. port id为61111,二进制表示为1110111010110111,去掉tag,则为111011101011,换算成十进制则为3819,则外部表示则为#Port<0.3819>。
  • 相关阅读:
    orale 函数大全[转] 涛
    easyuicombobox的option选项为true与false时的问题 涛
    数据库镜像转移Failover Partner 涛
    创建链接服务器 涛
    Sql Server 2008 R2 清空数据库中ldf日志文件 涛
    杂 涛
    Jquery 数组操作大全【转载】 涛
    VS2012常用快捷键 涛
    android studio集成ijkplayer Vevi
    CenOs 部署记录 Vevi
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2978367.html
Copyright © 2011-2022 走看看