<commit_before>
#ifndef _RBTREE_X_H
#define _RBTREE_X_H

#include <misc/rbtree.h>

struct rbtree_x_part
{
    rwlock_t lock;
    struct opr_rbtree t;
};

struct rbtree_x
{
    uint32_t npart;
    struct rbtree_x_part *tree;
};
<commit_msg>Provide cache line independence of rbtree partitions.<commit_after>
#ifndef _RBTREE_X_H
#define _RBTREE_X_H

#include <misc/rbtree.h>

#define CACHE_LINE_SIZE 64
#define CACHE_PAD(_n) char __pad ## _n [CACHE_LINE_SIZE]

struct rbtree_x_part
{
    CACHE_PAD(0);
    rwlock_t lock;
    struct opr_rbtree t;
    CACHE_PAD(1);
};

struct rbtree_x
{
    uint32_t npart;
    struct rbtree_x_part *tree;
};

{'fraction_non_alphanumeric': 0.0892018779342723, 'fraction_numerical': 0.012519561815336464, 'mean_word_length': 4.289256198347108, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1033742', 'n_tokens_mistral': 296, 'n_tokens_neox': 281, 'n_words': 59}