catboost 1.25.1 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEPLOYMENT.md +22 -15
- package/README.md +37 -27
- package/binding.gyp +5 -7
- package/build_scripts/bootstrap.js +2 -1
- package/build_scripts/out/build.js +46 -68
- package/build_scripts/out/build_model.js +1 -1
- package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
- package/build_scripts/out/ci.js +5 -5
- package/build_scripts/out/config.js +32 -18
- package/build_scripts/out/install.js +5 -3
- package/build_scripts/out/package_prepublish.js +1 -1
- package/build_scripts/out/packaging.js +1 -19
- package/build_scripts/out/run_tests.js +1 -1
- package/build_scripts/out/test.js +8 -3
- package/config.json +18 -11
- package/inc/catboost/libs/model_interface/c_api.h +349 -3
- package/lib/catboost.d.ts +65 -21
- package/package.json +4 -4
- package/src/api_helpers.cpp +100 -24
- package/src/api_helpers.h +8 -7
- package/src/api_module.cpp +1 -2
- package/src/model.cpp +483 -83
- package/src/model.h +24 -9
- package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
- package/inc/util/charset/recode_result.h +0 -9
- package/inc/util/charset/unicode_table.h +0 -123
- package/inc/util/charset/unidata.h +0 -421
- package/inc/util/charset/utf8.h +0 -384
- package/inc/util/charset/wide.h +0 -843
- package/inc/util/charset/wide_specific.h +0 -22
- package/inc/util/datetime/base.h +0 -669
- package/inc/util/datetime/constants.h +0 -7
- package/inc/util/datetime/cputimer.h +0 -124
- package/inc/util/datetime/parser.h +0 -292
- package/inc/util/datetime/systime.h +0 -47
- package/inc/util/datetime/uptime.h +0 -8
- package/inc/util/digest/city.h +0 -88
- package/inc/util/digest/fnv.h +0 -73
- package/inc/util/digest/multi.h +0 -14
- package/inc/util/digest/murmur.h +0 -57
- package/inc/util/digest/numeric.h +0 -86
- package/inc/util/digest/sequence.h +0 -48
- package/inc/util/draft/date.h +0 -129
- package/inc/util/draft/datetime.h +0 -184
- package/inc/util/draft/enum.h +0 -136
- package/inc/util/draft/holder_vector.h +0 -102
- package/inc/util/draft/ip.h +0 -131
- package/inc/util/draft/matrix.h +0 -108
- package/inc/util/draft/memory.h +0 -40
- package/inc/util/folder/dirent_win.h +0 -46
- package/inc/util/folder/dirut.h +0 -121
- package/inc/util/folder/filelist.h +0 -81
- package/inc/util/folder/fts.h +0 -108
- package/inc/util/folder/iterator.h +0 -109
- package/inc/util/folder/lstat_win.h +0 -20
- package/inc/util/folder/path.h +0 -225
- package/inc/util/folder/pathsplit.h +0 -113
- package/inc/util/folder/tempdir.h +0 -42
- package/inc/util/generic/adaptor.h +0 -134
- package/inc/util/generic/algorithm.h +0 -765
- package/inc/util/generic/array_ref.h +0 -282
- package/inc/util/generic/array_size.h +0 -24
- package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
- package/inc/util/generic/bitmap.h +0 -1115
- package/inc/util/generic/bitops.h +0 -459
- package/inc/util/generic/bt_exception.h +0 -24
- package/inc/util/generic/buffer.h +0 -232
- package/inc/util/generic/cast.h +0 -176
- package/inc/util/generic/deque.h +0 -24
- package/inc/util/generic/explicit_type.h +0 -42
- package/inc/util/generic/fastqueue.h +0 -55
- package/inc/util/generic/flags.h +0 -244
- package/inc/util/generic/function.h +0 -103
- package/inc/util/generic/fwd.h +0 -171
- package/inc/util/generic/guid.h +0 -61
- package/inc/util/generic/hash.h +0 -2032
- package/inc/util/generic/hash_primes.h +0 -140
- package/inc/util/generic/hash_set.h +0 -490
- package/inc/util/generic/hide_ptr.h +0 -3
- package/inc/util/generic/intrlist.h +0 -876
- package/inc/util/generic/is_in.h +0 -53
- package/inc/util/generic/iterator.h +0 -137
- package/inc/util/generic/iterator_range.h +0 -105
- package/inc/util/generic/lazy_value.h +0 -66
- package/inc/util/generic/list.h +0 -22
- package/inc/util/generic/map.h +0 -44
- package/inc/util/generic/mapfindptr.h +0 -60
- package/inc/util/generic/maybe.h +0 -713
- package/inc/util/generic/maybe_traits.h +0 -164
- package/inc/util/generic/mem_copy.h +0 -55
- package/inc/util/generic/noncopyable.h +0 -38
- package/inc/util/generic/object_counter.h +0 -53
- package/inc/util/generic/ptr.h +0 -1113
- package/inc/util/generic/queue.h +0 -57
- package/inc/util/generic/refcount.h +0 -162
- package/inc/util/generic/reserve.h +0 -11
- package/inc/util/generic/scope.h +0 -65
- package/inc/util/generic/serialized_enum.h +0 -406
- package/inc/util/generic/set.h +0 -42
- package/inc/util/generic/singleton.h +0 -136
- package/inc/util/generic/size_literals.h +0 -65
- package/inc/util/generic/stack.h +0 -18
- package/inc/util/generic/store_policy.h +0 -120
- package/inc/util/generic/strbase.h +0 -612
- package/inc/util/generic/strbuf.h +0 -552
- package/inc/util/generic/strfcpy.h +0 -17
- package/inc/util/generic/string.h +0 -1572
- package/inc/util/generic/string_hash.h +0 -21
- package/inc/util/generic/string_ut.h +0 -1175
- package/inc/util/generic/type_name.h +0 -34
- package/inc/util/generic/typelist.h +0 -114
- package/inc/util/generic/typetraits.h +0 -325
- package/inc/util/generic/utility.h +0 -132
- package/inc/util/generic/va_args.h +0 -400
- package/inc/util/generic/variant.h +0 -631
- package/inc/util/generic/variant_traits.h +0 -171
- package/inc/util/generic/vector.h +0 -119
- package/inc/util/generic/xrange.h +0 -258
- package/inc/util/generic/yexception.h +0 -212
- package/inc/util/generic/yexception_ut.h +0 -14
- package/inc/util/generic/ylimits.h +0 -92
- package/inc/util/generic/ymath.h +0 -206
- package/inc/util/memory/addstorage.h +0 -93
- package/inc/util/memory/alloc.h +0 -27
- package/inc/util/memory/blob.h +0 -296
- package/inc/util/memory/mmapalloc.h +0 -8
- package/inc/util/memory/pool.h +0 -432
- package/inc/util/memory/segmented_string_pool.h +0 -194
- package/inc/util/memory/segpool_alloc.h +0 -118
- package/inc/util/memory/smallobj.h +0 -141
- package/inc/util/memory/tempbuf.h +0 -111
- package/inc/util/network/address.h +0 -136
- package/inc/util/network/endpoint.h +0 -61
- package/inc/util/network/hostip.h +0 -16
- package/inc/util/network/init.h +0 -60
- package/inc/util/network/interface.h +0 -17
- package/inc/util/network/iovec.h +0 -65
- package/inc/util/network/ip.h +0 -116
- package/inc/util/network/nonblock.h +0 -8
- package/inc/util/network/pair.h +0 -9
- package/inc/util/network/poller.h +0 -58
- package/inc/util/network/pollerimpl.h +0 -707
- package/inc/util/network/sock.h +0 -608
- package/inc/util/network/socket.h +0 -421
- package/inc/util/random/common_ops.h +0 -130
- package/inc/util/random/easy.h +0 -47
- package/inc/util/random/entropy.h +0 -21
- package/inc/util/random/fast.h +0 -101
- package/inc/util/random/init_atfork.h +0 -3
- package/inc/util/random/lcg_engine.h +0 -66
- package/inc/util/random/mersenne.h +0 -46
- package/inc/util/random/mersenne32.h +0 -50
- package/inc/util/random/mersenne64.h +0 -50
- package/inc/util/random/normal.h +0 -38
- package/inc/util/random/random.h +0 -30
- package/inc/util/random/shuffle.h +0 -39
- package/inc/util/str_stl.h +0 -266
- package/inc/util/stream/aligned.h +0 -99
- package/inc/util/stream/buffer.h +0 -119
- package/inc/util/stream/buffered.h +0 -225
- package/inc/util/stream/debug.h +0 -53
- package/inc/util/stream/direct_io.h +0 -43
- package/inc/util/stream/file.h +0 -108
- package/inc/util/stream/format.h +0 -444
- package/inc/util/stream/fwd.h +0 -100
- package/inc/util/stream/hex.h +0 -8
- package/inc/util/stream/holder.h +0 -44
- package/inc/util/stream/input.h +0 -273
- package/inc/util/stream/labeled.h +0 -19
- package/inc/util/stream/length.h +0 -100
- package/inc/util/stream/mem.h +0 -255
- package/inc/util/stream/multi.h +0 -32
- package/inc/util/stream/null.h +0 -61
- package/inc/util/stream/output.h +0 -304
- package/inc/util/stream/pipe.h +0 -112
- package/inc/util/stream/printf.h +0 -25
- package/inc/util/stream/str.h +0 -207
- package/inc/util/stream/tee.h +0 -28
- package/inc/util/stream/tempbuf.h +0 -21
- package/inc/util/stream/tokenizer.h +0 -214
- package/inc/util/stream/trace.h +0 -60
- package/inc/util/stream/walk.h +0 -35
- package/inc/util/stream/zerocopy.h +0 -91
- package/inc/util/stream/zerocopy_output.h +0 -57
- package/inc/util/stream/zlib.h +0 -173
- package/inc/util/string/ascii.h +0 -236
- package/inc/util/string/builder.h +0 -39
- package/inc/util/string/cast.h +0 -347
- package/inc/util/string/cstriter.h +0 -14
- package/inc/util/string/escape.h +0 -70
- package/inc/util/string/hex.h +0 -59
- package/inc/util/string/join.h +0 -194
- package/inc/util/string/printf.h +0 -13
- package/inc/util/string/reverse.h +0 -16
- package/inc/util/string/split.h +0 -1080
- package/inc/util/string/strip.h +0 -257
- package/inc/util/string/strspn.h +0 -65
- package/inc/util/string/subst.h +0 -56
- package/inc/util/string/type.h +0 -50
- package/inc/util/string/util.h +0 -195
- package/inc/util/string/vector.h +0 -132
- package/inc/util/system/align.h +0 -50
- package/inc/util/system/atexit.h +0 -22
- package/inc/util/system/atomic.h +0 -51
- package/inc/util/system/atomic_gcc.h +0 -90
- package/inc/util/system/atomic_ops.h +0 -189
- package/inc/util/system/atomic_win.h +0 -114
- package/inc/util/system/backtrace.h +0 -39
- package/inc/util/system/byteorder.h +0 -186
- package/inc/util/system/compat.h +0 -84
- package/inc/util/system/compiler.h +0 -620
- package/inc/util/system/condvar.h +0 -71
- package/inc/util/system/context.h +0 -181
- package/inc/util/system/context_aarch64.h +0 -8
- package/inc/util/system/context_i686.h +0 -9
- package/inc/util/system/context_x86.h +0 -12
- package/inc/util/system/context_x86_64.h +0 -7
- package/inc/util/system/cpu_id.h +0 -159
- package/inc/util/system/daemon.h +0 -28
- package/inc/util/system/datetime.h +0 -98
- package/inc/util/system/defaults.h +0 -149
- package/inc/util/system/demangle.h +0 -5
- package/inc/util/system/demangle_impl.h +0 -23
- package/inc/util/system/direct_io.h +0 -71
- package/inc/util/system/dynlib.h +0 -119
- package/inc/util/system/env.h +0 -32
- package/inc/util/system/error.h +0 -95
- package/inc/util/system/event.h +0 -122
- package/inc/util/system/execpath.h +0 -17
- package/inc/util/system/fasttime.h +0 -6
- package/inc/util/system/fhandle.h +0 -27
- package/inc/util/system/file.h +0 -210
- package/inc/util/system/file_lock.h +0 -34
- package/inc/util/system/filemap.h +0 -383
- package/inc/util/system/flock.h +0 -35
- package/inc/util/system/fs.h +0 -156
- package/inc/util/system/fs_win.h +0 -29
- package/inc/util/system/fstat.h +0 -46
- package/inc/util/system/getpid.h +0 -12
- package/inc/util/system/guard.h +0 -179
- package/inc/util/system/hi_lo.h +0 -139
- package/inc/util/system/hostname.h +0 -10
- package/inc/util/system/hp_timer.h +0 -36
- package/inc/util/system/info.h +0 -12
- package/inc/util/system/interrupt_signals.h +0 -22
- package/inc/util/system/madvise.h +0 -30
- package/inc/util/system/maxlen.h +0 -32
- package/inc/util/system/mem_info.h +0 -18
- package/inc/util/system/mincore.h +0 -38
- package/inc/util/system/mktemp.h +0 -11
- package/inc/util/system/mlock.h +0 -43
- package/inc/util/system/mutex.h +0 -67
- package/inc/util/system/nice.h +0 -3
- package/inc/util/system/pipe.h +0 -90
- package/inc/util/system/platform.h +0 -246
- package/inc/util/system/progname.h +0 -13
- package/inc/util/system/protect.h +0 -25
- package/inc/util/system/rusage.h +0 -26
- package/inc/util/system/rwlock.h +0 -78
- package/inc/util/system/sanitizers.h +0 -122
- package/inc/util/system/sem.h +0 -41
- package/inc/util/system/shellcommand.h +0 -472
- package/inc/util/system/shmat.h +0 -32
- package/inc/util/system/sigset.h +0 -78
- package/inc/util/system/spin_wait.h +0 -10
- package/inc/util/system/spinlock.h +0 -121
- package/inc/util/system/src_location.h +0 -25
- package/inc/util/system/src_root.h +0 -68
- package/inc/util/system/sys_alloc.h +0 -43
- package/inc/util/system/sysstat.h +0 -52
- package/inc/util/system/tempfile.h +0 -34
- package/inc/util/system/thread.h +0 -167
- package/inc/util/system/tls.h +0 -307
- package/inc/util/system/types.h +0 -119
- package/inc/util/system/unaligned_mem.h +0 -67
- package/inc/util/system/user.h +0 -5
- package/inc/util/system/utime.h +0 -6
- package/inc/util/system/valgrind.h +0 -48
- package/inc/util/system/winint.h +0 -43
- package/inc/util/system/yassert.h +0 -121
- package/inc/util/system/yield.h +0 -4
- package/inc/util/thread/factory.h +0 -65
- package/inc/util/thread/fwd.h +0 -30
- package/inc/util/thread/lfqueue.h +0 -406
- package/inc/util/thread/lfstack.h +0 -188
- package/inc/util/thread/pool.h +0 -388
- package/inc/util/thread/singleton.h +0 -42
- package/inc/util/ysafeptr.h +0 -427
- package/inc/util/ysaveload.h +0 -700
package/inc/util/system/guard.h
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/generic/noncopyable.h>
|
|
4
|
-
|
|
5
|
-
template <class T>
|
|
6
|
-
struct TCommonLockOps {
|
|
7
|
-
static inline void Acquire(T* t) noexcept {
|
|
8
|
-
t->Acquire();
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
static inline void Release(T* t) noexcept {
|
|
12
|
-
t->Release();
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
template <class T>
|
|
17
|
-
struct TTryLockOps: public TCommonLockOps<T> {
|
|
18
|
-
static inline bool TryAcquire(T* t) noexcept {
|
|
19
|
-
return t->TryAcquire();
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
//must be used with great care
|
|
24
|
-
template <class TOps>
|
|
25
|
-
struct TInverseLockOps: public TOps {
|
|
26
|
-
template <class T>
|
|
27
|
-
static inline void Acquire(T* t) noexcept {
|
|
28
|
-
TOps::Release(t);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
template <class T>
|
|
32
|
-
static inline void Release(T* t) noexcept {
|
|
33
|
-
TOps::Acquire(t);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
template <class T, class TOps = TCommonLockOps<T>>
|
|
38
|
-
class TGuard: public TNonCopyable {
|
|
39
|
-
public:
|
|
40
|
-
inline TGuard(const T& t) noexcept {
|
|
41
|
-
Init(&t);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
inline TGuard(const T* t) noexcept {
|
|
45
|
-
Init(t);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
inline TGuard(TGuard&& g) noexcept
|
|
49
|
-
: T_(g.T_)
|
|
50
|
-
{
|
|
51
|
-
g.T_ = nullptr;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
inline ~TGuard() {
|
|
55
|
-
Release();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
inline void Release() noexcept {
|
|
59
|
-
if (WasAcquired()) {
|
|
60
|
-
TOps::Release(T_);
|
|
61
|
-
T_ = nullptr;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
explicit inline operator bool() const noexcept {
|
|
66
|
-
return WasAcquired();
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
inline bool WasAcquired() const noexcept {
|
|
70
|
-
return T_ != nullptr;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
inline T* GetMutex() const noexcept {
|
|
74
|
-
return T_;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
private:
|
|
78
|
-
inline void Init(const T* t) noexcept {
|
|
79
|
-
T_ = const_cast<T*>(t);
|
|
80
|
-
TOps::Acquire(T_);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
private:
|
|
84
|
-
T* T_;
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
/*
|
|
88
|
-
* {
|
|
89
|
-
* auto guard = Guard(Lock_);
|
|
90
|
-
* some code under guard
|
|
91
|
-
* }
|
|
92
|
-
*/
|
|
93
|
-
template <class T>
|
|
94
|
-
static inline TGuard<T> Guard(const T& t) {
|
|
95
|
-
return {&t};
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/*
|
|
99
|
-
* with_lock (Lock_) {
|
|
100
|
-
* some code under guard
|
|
101
|
-
* }
|
|
102
|
-
*/
|
|
103
|
-
#define with_lock(X) \
|
|
104
|
-
if (auto Y_GENERATE_UNIQUE_ID(__guard) = ::Guard(X)) { \
|
|
105
|
-
goto Y_CAT(GUARD_LABEL, __LINE__); \
|
|
106
|
-
} else \
|
|
107
|
-
Y_CAT(GUARD_LABEL, __LINE__) \
|
|
108
|
-
:
|
|
109
|
-
|
|
110
|
-
/*
|
|
111
|
-
* auto guard = Guard(Lock_);
|
|
112
|
-
* ... some code under lock
|
|
113
|
-
* {
|
|
114
|
-
* auto unguard = Unguard(guard);
|
|
115
|
-
* ... some code not under lock
|
|
116
|
-
* }
|
|
117
|
-
* ... some code under lock
|
|
118
|
-
*/
|
|
119
|
-
template <class T, class TOps = TCommonLockOps<T>>
|
|
120
|
-
using TInverseGuard = TGuard<T, TInverseLockOps<TOps>>;
|
|
121
|
-
|
|
122
|
-
template <class T, class TOps>
|
|
123
|
-
static inline TInverseGuard<T, TOps> Unguard(const TGuard<T, TOps>& guard) {
|
|
124
|
-
return {guard.GetMutex()};
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
template <class T>
|
|
128
|
-
static inline TInverseGuard<T> Unguard(const T& mutex) {
|
|
129
|
-
return {&mutex};
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
template <class T, class TOps = TTryLockOps<T>>
|
|
133
|
-
class TTryGuard: public TNonCopyable {
|
|
134
|
-
public:
|
|
135
|
-
inline TTryGuard(const T& t) noexcept {
|
|
136
|
-
Init(&t);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
inline TTryGuard(const T* t) noexcept {
|
|
140
|
-
Init(t);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
inline TTryGuard(TTryGuard&& g) noexcept
|
|
144
|
-
: T_(g.T_)
|
|
145
|
-
{
|
|
146
|
-
g.T_ = nullptr;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
inline ~TTryGuard() {
|
|
150
|
-
Release();
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
inline void Release() noexcept {
|
|
154
|
-
if (WasAcquired()) {
|
|
155
|
-
TOps::Release(T_);
|
|
156
|
-
T_ = nullptr;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
inline bool WasAcquired() const noexcept {
|
|
161
|
-
return T_ != nullptr;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
explicit inline operator bool() const noexcept {
|
|
165
|
-
return WasAcquired();
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
private:
|
|
169
|
-
inline void Init(const T* t) noexcept {
|
|
170
|
-
T_ = nullptr;
|
|
171
|
-
T* tMutable = const_cast<T*>(t);
|
|
172
|
-
if (TOps::TryAcquire(tMutable)) {
|
|
173
|
-
T_ = tMutable;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
private:
|
|
178
|
-
T* T_;
|
|
179
|
-
};
|
package/inc/util/system/hi_lo.h
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "unaligned_mem.h"
|
|
4
|
-
|
|
5
|
-
#ifndef _little_endian_
|
|
6
|
-
#error "Not implemented"
|
|
7
|
-
#endif
|
|
8
|
-
|
|
9
|
-
namespace NHiLoPrivate {
|
|
10
|
-
template <class TRepr>
|
|
11
|
-
class TConstIntRef {
|
|
12
|
-
public:
|
|
13
|
-
explicit TConstIntRef(const char* ptr)
|
|
14
|
-
: Ptr(ptr)
|
|
15
|
-
{
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
TRepr Get() const { return ReadUnaligned<TRepr>(Ptr); }
|
|
19
|
-
operator TRepr() const { return Get(); }
|
|
20
|
-
|
|
21
|
-
const char* GetPtr() const { return Ptr; }
|
|
22
|
-
|
|
23
|
-
protected:
|
|
24
|
-
const char* Ptr;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
template <class TRepr>
|
|
28
|
-
class TIntRef : public TConstIntRef<TRepr> {
|
|
29
|
-
public:
|
|
30
|
-
explicit TIntRef(char* ptr)
|
|
31
|
-
: TConstIntRef<TRepr>(ptr)
|
|
32
|
-
{
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
TIntRef& operator=(TRepr value) {
|
|
36
|
-
WriteUnaligned<TRepr>(GetPtr(), value);
|
|
37
|
-
return *this;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
char* GetPtr() const { return const_cast<char *>(this->Ptr); }
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
template <class T>
|
|
44
|
-
struct TReferenceType {
|
|
45
|
-
using TType = T;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
template <class T>
|
|
49
|
-
struct TReferenceType<TConstIntRef<T>> {
|
|
50
|
-
using TType = T;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
template <class T>
|
|
54
|
-
struct TReferenceType<TIntRef<T>> {
|
|
55
|
-
using TType = T;
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
template <class TRepr>
|
|
59
|
-
auto MakeIntRef(const char* ptr) {
|
|
60
|
-
return TConstIntRef<TRepr>(ptr);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
template <class TRepr>
|
|
64
|
-
auto MakeIntRef(char* ptr) {
|
|
65
|
-
return TIntRef<TRepr>(ptr);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
template <class T>
|
|
69
|
-
const char* CharPtrOf(const T& value) {
|
|
70
|
-
return reinterpret_cast<const char *>(&value);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
template <class T>
|
|
74
|
-
char* CharPtrOf(T& value) {
|
|
75
|
-
return reinterpret_cast<char *>(&value);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
template <class T>
|
|
79
|
-
const char* CharPtrOf(TConstIntRef<T> value) {
|
|
80
|
-
return value.GetPtr();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
template <class T>
|
|
84
|
-
char* CharPtrOf(TIntRef<T> value) {
|
|
85
|
-
return value.GetPtr();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
template <bool IsLow, class TRepr, class T>
|
|
89
|
-
auto MakeIntRef(T&& value) {
|
|
90
|
-
using TRef = typename TReferenceType<typename std::decay<T>::type>::TType;
|
|
91
|
-
static_assert(
|
|
92
|
-
std::is_scalar<TRef>::value,
|
|
93
|
-
"Hi* and Lo* functions can be applied only to scalar values");
|
|
94
|
-
static_assert(sizeof(TRef) >= sizeof(TRepr), "Requested bit range is not within provided value");
|
|
95
|
-
constexpr size_t offset = IsLow ? 0 : sizeof(TRef) - sizeof(TRepr);
|
|
96
|
-
|
|
97
|
-
return MakeIntRef<TRepr>(CharPtrOf(std::forward<T>(value)) + offset);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Return manipulator object that allows to get and set lower or higher bits of the value.
|
|
103
|
-
*
|
|
104
|
-
* @param value Must be a scalar value of sufficient size or a manipulator object obtained by
|
|
105
|
-
* calling any of the other Hi/Lo functions.
|
|
106
|
-
*
|
|
107
|
-
* @{
|
|
108
|
-
*/
|
|
109
|
-
template <class T>
|
|
110
|
-
auto Lo32(T&& value) {
|
|
111
|
-
return NHiLoPrivate::MakeIntRef<true, ui32>(std::forward<T>(value));
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
template <class T>
|
|
115
|
-
auto Hi32(T&& value) {
|
|
116
|
-
return NHiLoPrivate::MakeIntRef<false, ui32>(std::forward<T>(value));
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
template <class T>
|
|
120
|
-
auto Lo16(T&& value) {
|
|
121
|
-
return NHiLoPrivate::MakeIntRef<true, ui16>(std::forward<T>(value));
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
template <class T>
|
|
125
|
-
auto Hi16(T&& value) {
|
|
126
|
-
return NHiLoPrivate::MakeIntRef<false, ui16>(std::forward<T>(value));
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
template <class T>
|
|
130
|
-
auto Lo8(T&& value) {
|
|
131
|
-
return NHiLoPrivate::MakeIntRef<true, ui8>(std::forward<T>(value));
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
template <class T>
|
|
135
|
-
auto Hi8(T&& value) {
|
|
136
|
-
return NHiLoPrivate::MakeIntRef<false, ui8>(std::forward<T>(value));
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/** @} */
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
|
|
5
|
-
namespace NHPTimer {
|
|
6
|
-
using STime = i64;
|
|
7
|
-
// May delay for ~50ms to compute frequency
|
|
8
|
-
double GetSeconds(const STime& a) noexcept;
|
|
9
|
-
// Returns the current time
|
|
10
|
-
void GetTime(STime* pTime) noexcept;
|
|
11
|
-
// Returns the time passed since *pTime, and writes the current time into *pTime.
|
|
12
|
-
double GetTimePassed(STime* pTime) noexcept;
|
|
13
|
-
// Get TSC frequency, may delay for ~50ms to compute frequency
|
|
14
|
-
double GetClockRate() noexcept;
|
|
15
|
-
// same as GetClockRate, but in integer
|
|
16
|
-
ui64 GetCyclesPerSecond() noexcept;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
struct THPTimer {
|
|
20
|
-
THPTimer() noexcept {
|
|
21
|
-
Reset();
|
|
22
|
-
}
|
|
23
|
-
void Reset() noexcept {
|
|
24
|
-
NHPTimer::GetTime(&Start);
|
|
25
|
-
}
|
|
26
|
-
double Passed() const noexcept {
|
|
27
|
-
NHPTimer::STime tmp = Start;
|
|
28
|
-
return NHPTimer::GetTimePassed(&tmp);
|
|
29
|
-
}
|
|
30
|
-
double PassedReset() noexcept {
|
|
31
|
-
return NHPTimer::GetTimePassed(&Start);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private:
|
|
35
|
-
NHPTimer::STime Start;
|
|
36
|
-
};
|
package/inc/util/system/info.h
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
|
|
5
|
-
namespace NSystemInfo {
|
|
6
|
-
size_t NumberOfCpus();
|
|
7
|
-
size_t CachedNumberOfCpus();
|
|
8
|
-
size_t LoadAverage(double* la, size_t len);
|
|
9
|
-
size_t GetPageSize() noexcept;
|
|
10
|
-
size_t TotalMemorySize();
|
|
11
|
-
size_t MaxOpenFiles();
|
|
12
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "platform.h"
|
|
4
|
-
|
|
5
|
-
#include <csignal>
|
|
6
|
-
|
|
7
|
-
#ifdef _win_
|
|
8
|
-
#ifndef SIGHUP
|
|
9
|
-
#define SIGHUP 1 /* Hangup (POSIX). */
|
|
10
|
-
#endif
|
|
11
|
-
#endif
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Set handler for interrupt signals.
|
|
15
|
-
*
|
|
16
|
-
* All OSes: SIGINT, SIGTERM (defined by C++ standard)
|
|
17
|
-
* UNIX variants: Also SIGHUP
|
|
18
|
-
* Windows: CTRL_C_EVENT handled as SIGINT, CTRL_BREAK_EVENT as SIGTERM, CTRL_CLOSE_EVENT as SIGHUP
|
|
19
|
-
*
|
|
20
|
-
* \param handler Signal handler to use. Pass nullptr to clear currently set handler.
|
|
21
|
-
*/
|
|
22
|
-
void SetInterruptSignalsHandler(void (*handler)(int signum));
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
|
|
5
|
-
#include <util/generic/array_ref.h>
|
|
6
|
-
|
|
7
|
-
/// see linux madvise(MADV_SEQUENTIAL)
|
|
8
|
-
void MadviseSequentialAccess(const void* begin, size_t size);
|
|
9
|
-
void MadviseSequentialAccess(TArrayRef<const char> data);
|
|
10
|
-
void MadviseSequentialAccess(TArrayRef<const ui8> data);
|
|
11
|
-
|
|
12
|
-
/// see linux madvise(MADV_RANDOM)
|
|
13
|
-
void MadviseRandomAccess(const void* begin, size_t size);
|
|
14
|
-
void MadviseRandomAccess(TArrayRef<const char> data);
|
|
15
|
-
void MadviseRandomAccess(TArrayRef<const ui8> data);
|
|
16
|
-
|
|
17
|
-
/// see linux madvise(MADV_DONTNEED)
|
|
18
|
-
void MadviseEvict(const void* begin, size_t size);
|
|
19
|
-
void MadviseEvict(TArrayRef<const char> data);
|
|
20
|
-
void MadviseEvict(TArrayRef<const ui8> data);
|
|
21
|
-
|
|
22
|
-
/// see linux madvise(MADV_DONTDUMP)
|
|
23
|
-
void MadviseExcludeFromCoreDump(const void* begin, size_t size);
|
|
24
|
-
void MadviseExcludeFromCoreDump(TArrayRef<const char> data);
|
|
25
|
-
void MadviseExcludeFromCoreDump(TArrayRef<const ui8> data);
|
|
26
|
-
|
|
27
|
-
/// see linux madvise(MADV_DODUMP)
|
|
28
|
-
void MadviseIncludeIntoCoreDump(const void* begin, size_t size);
|
|
29
|
-
void MadviseIncludeIntoCoreDump(TArrayRef<const char> data);
|
|
30
|
-
void MadviseIncludeIntoCoreDump(TArrayRef<const ui8> data);
|
package/inc/util/system/maxlen.h
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <cstdlib>
|
|
4
|
-
|
|
5
|
-
// http://support.microsoft.com/kb/208427
|
|
6
|
-
#ifndef URL_MAXLEN
|
|
7
|
-
#define URL_MAXLEN 2083
|
|
8
|
-
#endif
|
|
9
|
-
|
|
10
|
-
#define HOST_MAX 260
|
|
11
|
-
#ifndef URL_MAX
|
|
12
|
-
#define URL_MAX 1024
|
|
13
|
-
#endif
|
|
14
|
-
#define FULLURL_MAX (URL_MAX + HOST_MAX)
|
|
15
|
-
|
|
16
|
-
#define LINKTEXT_MAX 1024
|
|
17
|
-
|
|
18
|
-
#ifdef WIN32
|
|
19
|
-
#ifndef PATH_MAX
|
|
20
|
-
#define PATH_MAX _MAX_PATH
|
|
21
|
-
#endif
|
|
22
|
-
#else
|
|
23
|
-
|
|
24
|
-
#ifndef MAX_PATH
|
|
25
|
-
#define MAX_PATH PATH_MAX
|
|
26
|
-
#endif
|
|
27
|
-
|
|
28
|
-
#ifndef _MAX_PATH
|
|
29
|
-
#define _MAX_PATH PATH_MAX
|
|
30
|
-
#endif
|
|
31
|
-
|
|
32
|
-
#endif
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "compat.h"
|
|
4
|
-
|
|
5
|
-
namespace NMemInfo {
|
|
6
|
-
struct TMemInfo {
|
|
7
|
-
ui64 RSS; // current RAM size of the process
|
|
8
|
-
ui64 VMS; // current VM size of the process
|
|
9
|
-
|
|
10
|
-
TMemInfo()
|
|
11
|
-
: RSS()
|
|
12
|
-
, VMS()
|
|
13
|
-
{
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
TMemInfo GetMemInfo(pid_t = 0);
|
|
18
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
/**
|
|
5
|
-
* Fills a vector that indicates whether pages of the calling process's virtual memory are resident in RAM. Each byte
|
|
6
|
-
* in the vector contains the status of a single page. The page size can be obtained via the NSystemInfo::GetPageSize()
|
|
7
|
-
* function. Use the IsPageInCore function to interpret the page status byte.
|
|
8
|
-
*
|
|
9
|
-
* Can be overly pessimistic:
|
|
10
|
-
* - Assumes nothing is in RAM on platforms other than Linux
|
|
11
|
-
* - Recent Linux kernels (4.21 and some backports) may return zeroes if the process doesn't have writing permissions
|
|
12
|
-
* for the given file. See CVE-2019-5489.
|
|
13
|
-
*
|
|
14
|
-
* @param[in] addr starting address of the memory range to be examined
|
|
15
|
-
* @param[in] len length (bytes) of the memory range to be examined
|
|
16
|
-
* @param[out] vec vector of bytes to store statuses of memory pages
|
|
17
|
-
* @param[in] vecLen length (bytes) of the vec, should be large enough to hold the requested pages count
|
|
18
|
-
* @throws yexception if there was a system error or if the vecLen is too small
|
|
19
|
-
*
|
|
20
|
-
* @note this is only a snapshot, results may be stale by the time they're used
|
|
21
|
-
* @see man 2 mincore
|
|
22
|
-
*/
|
|
23
|
-
void InCoreMemory(const void* addr, size_t len, unsigned char* vec, size_t vecLen);
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Takes as an argument an element of the vector previously filled by InCoreMemory.
|
|
27
|
-
*
|
|
28
|
-
* @param[in] byte corresponding to the status of a single page
|
|
29
|
-
*
|
|
30
|
-
* @returns true if this page was resident in memory at the time out the InCoreMemory execution
|
|
31
|
-
*/
|
|
32
|
-
inline bool IsPageInCore(unsigned char s) {
|
|
33
|
-
/* From mincore(2): On return, the least significant bit of each byte will be set if the corresponding page is
|
|
34
|
-
* currently resident in memory, and be clear otherwise. (The settings of the other bits in each byte are
|
|
35
|
-
* undefined; these bits are reserved for possible later use.)
|
|
36
|
-
*/
|
|
37
|
-
return s & 1;
|
|
38
|
-
}
|
package/inc/util/system/mktemp.h
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/generic/fwd.h>
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Create temp file name in the specified directory. If there is no file with this name, it will be created.
|
|
7
|
-
* Note, that the function is not race-free, the file is guaranteed to exist at the time the function returns, but not at the time the returned name is first used.
|
|
8
|
-
* If wrkDir is NULL or empty, GetSystemTempDir is used.
|
|
9
|
-
* throw exception on error
|
|
10
|
-
*/
|
|
11
|
-
TString MakeTempName(const char* wrkDir = nullptr, const char* prefix = "yandex");
|
package/inc/util/system/mlock.h
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "defaults.h"
|
|
4
|
-
|
|
5
|
-
#include <util/generic/flags.h>
|
|
6
|
-
|
|
7
|
-
//on some systems (not win, freebd, linux, but darwin (Mac OS X)
|
|
8
|
-
//multiple mlock calls on the same address range
|
|
9
|
-
//require the corresponding number of munlock calls to actually unlock the pages
|
|
10
|
-
|
|
11
|
-
//on some systems you must have privilege and resource limit
|
|
12
|
-
|
|
13
|
-
void LockMemory(const void* addr, size_t len);
|
|
14
|
-
void UnlockMemory(const void* addr, size_t len);
|
|
15
|
-
|
|
16
|
-
enum ELockAllMemoryFlag {
|
|
17
|
-
/** Lock all pages which are currently mapped into the address space of the process. */
|
|
18
|
-
LockCurrentMemory = 1,
|
|
19
|
-
|
|
20
|
-
/** Lock all pages which will become mapped into the address space of the process in the future. */
|
|
21
|
-
LockFutureMemory = 2,
|
|
22
|
-
|
|
23
|
-
/** Since Linux 4.4, with LockCurrentMemory or LockFutureMemory or both, lock only pages that are or once they are present in memory. */
|
|
24
|
-
LockMemoryOnFault = 4,
|
|
25
|
-
};
|
|
26
|
-
Y_DECLARE_FLAGS(ELockAllMemoryFlags, ELockAllMemoryFlag)
|
|
27
|
-
Y_DECLARE_OPERATORS_FOR_FLAGS(ELockAllMemoryFlags)
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Performs provided locking operation.
|
|
31
|
-
*
|
|
32
|
-
* Does nothing on windows.
|
|
33
|
-
*
|
|
34
|
-
* \param flags Locking operation to perform.
|
|
35
|
-
*/
|
|
36
|
-
void LockAllMemory(ELockAllMemoryFlags flags);
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Unlocks whatever was locked with a previous call to `LockAllMemory`.
|
|
40
|
-
*
|
|
41
|
-
* Does nothing on windows.
|
|
42
|
-
*/
|
|
43
|
-
void UnlockAllMemory();
|
package/inc/util/system/mutex.h
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "guard.h"
|
|
4
|
-
#include "defaults.h"
|
|
5
|
-
|
|
6
|
-
#include <util/generic/ptr.h>
|
|
7
|
-
#include <util/generic/noncopyable.h>
|
|
8
|
-
|
|
9
|
-
class TFakeMutex: public TNonCopyable {
|
|
10
|
-
public:
|
|
11
|
-
inline void Acquire() noexcept {
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
inline bool TryAcquire() noexcept {
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
inline void Release() noexcept {
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
inline void lock() noexcept {
|
|
22
|
-
Acquire();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
inline bool try_lock() noexcept {
|
|
26
|
-
return TryAcquire();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
inline void unlock() noexcept {
|
|
30
|
-
Release();
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
~TFakeMutex() = default;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
class TSysMutex {
|
|
37
|
-
public:
|
|
38
|
-
TSysMutex();
|
|
39
|
-
TSysMutex(TSysMutex&&);
|
|
40
|
-
~TSysMutex();
|
|
41
|
-
|
|
42
|
-
void Acquire() noexcept;
|
|
43
|
-
bool TryAcquire() noexcept;
|
|
44
|
-
void Release() noexcept;
|
|
45
|
-
|
|
46
|
-
inline void lock() noexcept {
|
|
47
|
-
Acquire();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
inline bool try_lock() noexcept {
|
|
51
|
-
return TryAcquire();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
inline void unlock() noexcept {
|
|
55
|
-
Release();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
//return opaque pointer to real handler
|
|
59
|
-
void* Handle() const noexcept;
|
|
60
|
-
|
|
61
|
-
private:
|
|
62
|
-
class TImpl;
|
|
63
|
-
THolder<TImpl> Impl_;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
class TMutex: public TSysMutex {
|
|
67
|
-
};
|
package/inc/util/system/nice.h
DELETED