• 大小: 87.3MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-03-02
  • 语言: 其他
  • 标签: otp_src_21.3  Erlang  erl  

资源简介

在编译emq过程中需要编译Erlang,故下载了该源码,本资源适用于linux系统下,如果有需要请下载

资源截图

代码片段和文件信息

/*
 * %CopyrightBegin%
 *
 * Copyright Ericsson AB 1996-2018. All Rights Reserved.
 *
 * Licensed under the Apache License Version 2.0 (the “License“);
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing software
 * distributed under the License is distributed on an “AS IS“ BASIS
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * %CopyrightEnd%
 */

#ifdef HAVE_CONFIG_H
#  include “config.h“
#endif

#include “sys.h“
#include “erl_sys_driver.h“
#include “erl_vm.h“
#include “global.h“
#include “hash.h“
#include “atom.h“


#define ATOM_SIZE  3000

IndexTable erts_atom_table; /* The index table */

static erts_rwmtx_t atom_table_lock;

#define atom_read_lock() erts_rwmtx_rlock(&atom_table_lock)
#define atom_read_unlock() erts_rwmtx_runlock(&atom_table_lock)
#define atom_write_lock() erts_rwmtx_rwlock(&atom_table_lock)
#define atom_write_unlock() erts_rwmtx_rwunlock(&atom_table_lock)

#if 0
#define ERTS_ATOM_PUT_OPS_STAT
#endif
#ifdef ERTS_ATOM_PUT_OPS_STAT
static erts_atomic_t atom_put_ops;
#endif

/* Functions for allocating space for the ext of atoms. We do not
 * use malloc for each atom to prevent excessive memory fragmentation
 */

typedef struct _atom_text {
    struct _atom_text* next;
    unsigned char text[ATOM_TEXT_SIZE];
} AtomText;

static AtomText* text_list; /* List of text buffers */
static byte *atom_text_pos;
static byte *atom_text_end;
static Uint reserved_atom_space; /* Total amount of atom text space */
static Uint atom_space; /* Amount of atom text space used */

/*
 * Print info about atom tables
 */
void atom_info(fmtfn_t to void *to_arg)
{
    int lock = !ERTS_IS_CRASH_DUMPING;
    if (lock)
atom_read_lock();
    index_info(to to_arg &erts_atom_table);
#ifdef ERTS_ATOM_PUT_OPS_STAT
    erts_print(to to_arg “atom_put_ops: %ld\n“
       erts_atomic_read_nob(&atom_put_ops));
#endif

    if (lock)
atom_read_unlock();
}

/*
 * Allocate an atom text segment.
 */
static void
more_atom_space(void)
{
    AtomText* ptr;

    ptr = (AtomText*) erts_alloc(ERTS_ALC_T_ATOM_TXT sizeof(AtomText));

    ptr->next = text_list;
    text_list = ptr;

    atom_text_pos = ptr->text;
    atom_text_end = atom_text_pos + ATOM_TEXT_SIZE;
    reserved_atom_space += sizeof(AtomText);

    VERBOSE(DEBUG_SYSTEM(“Allocated %d atom space\n“ATOM_TEXT_SIZE));
}

/*
 * Allocate string space within an atom text segment.
 */

static byte*
atom_text_alloc(int bytes)
{
    byte *res;

    ASSERT(bytes <= MAX_ATOM_SZ_LIMIT);
    if (atom_text_pos + bytes >= atom_text_end) {
more_atom_space();
    }
    res = atom_text_pos;
    atom_text_pos += bytes;
    atom_space    += bytes;
    return res;
}

/*
 * Calculate atom hash value (using the hash

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-07-08 14:49  ErlangOTP 21.3\
     文件         409  2019-03-12 04:10  ErlangOTP 21.3\.dir-locals.el
     文件         128  2019-03-12 04:10  ErlangOTP 21.3\.mailmap
     文件        2992  2019-03-12 04:10  ErlangOTP 21.3\.travis.yml
     文件       92913  2019-03-12 04:10  ErlangOTP 21.3\aclocal.m4
     文件         601  2019-03-12 04:10  ErlangOTP 21.3\AUTHORS
     目录           0  2020-07-08 14:49  ErlangOTP 21.3\bin\
     目录           0  2020-07-08 14:49  ErlangOTP 21.3\bootstrap\
     目录           0  2020-07-08 14:49  ErlangOTP 21.3\bootstrap\bin\
     文件        6486  2019-03-12 04:10  ErlangOTP 21.3\bootstrap\bin\no_dot_erlang.boot
     文件        6486  2019-03-12 04:10  ErlangOTP 21.3\bootstrap\bin\start.boot
     文件        6486  2019-03-12 04:10  ErlangOTP 21.3\bootstrap\bin\start_clean.boot
     文件      156648  2019-03-12 04:10  ErlangOTP 21.3\configure
     文件       15420  2019-03-12 04:10  ErlangOTP 21.3\configure.in
     文件        5869  2019-03-12 04:10  ErlangOTP 21.3\CONTRIBUTING.md
     文件        1146  2019-03-12 04:10  ErlangOTP 21.3\erl-build-tool-vars.sh
     目录           0  2020-07-08 14:49  ErlangOTP 21.3\erts\
     文件       92913  2019-03-12 04:10  ErlangOTP 21.3\erts\aclocal.m4
     文件        4902  2019-03-12 04:10  ErlangOTP 21.3\erts\AUTHORS
     目录           0  2020-07-08 14:49  ErlangOTP 21.3\erts\autoconf\
     文件       43423  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\config.guess
     文件       36087  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\config.sub
     文件        4154  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\configure.vxworks
     文件       13620  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\install-sh
     目录           0  2020-07-08 14:49  ErlangOTP 21.3\erts\autoconf\vxworks\
     文件        3649  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\vxworks\sed.general
     文件        1789  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\vxworks\sed.vxworks_cpu32
     文件        2870  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\vxworks\sed.vxworks_ppc32
     文件        1947  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\vxworks\sed.vxworks_ppc603
     文件        1910  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\vxworks\sed.vxworks_ppc603_nolongcall
     文件        2000  2019-03-12 04:10  ErlangOTP 21.3\erts\autoconf\vxworks\sed.vxworks_ppc860
............此处省略13111个文件信息

评论

共有 条评论