Skip to content

Commit c5ba7a3

Browse files
committed
lib, src: add maxmem prop in os module
1 parent 1ba508d commit c5ba7a3

File tree

4 files changed

+23
-0
lines changed

4 files changed

+23
-0
lines changed

doc/api/os.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,19 @@ added: v0.3.3
422422

423423
Returns the total amount of system memory in bytes as an integer.
424424

425+
## `os.maxmem()`
426+
427+
<!-- YAML
428+
added:
429+
- REPLACEME
430+
-->
431+
432+
* Returns: {integer}
433+
434+
Returns the total amount of memory available to the process (in bytes) based on
435+
limits imposed by the OS.
436+
If there is no such constraint, or the constraint is unknown, 0 is returned.
437+
425438
## `os.type()`
426439

427440
<!-- YAML

lib/os.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const {
5454
getPriority: _getPriority,
5555
getOSInformation: _getOSInformation,
5656
getTotalMem,
57+
getConstrainedMem,
5758
getUserInfo,
5859
getUptime: _getUptime,
5960
isBigEndian,
@@ -109,6 +110,7 @@ getOSRelease[SymbolToPrimitive] = () => getOSRelease();
109110
getMachine[SymbolToPrimitive] = () => getMachine();
110111
getHomeDirectory[SymbolToPrimitive] = () => getHomeDirectory();
111112
getTotalMem[SymbolToPrimitive] = () => getTotalMem();
113+
getConstrainedMem[SymbolToPrimitive] = () => getConstrainedMem();
112114
getUptime[SymbolToPrimitive] = () => getUptime();
113115

114116
const kEndianness = isBigEndian ? 'BE' : 'LE';
@@ -388,6 +390,7 @@ module.exports = {
388390
setPriority,
389391
tmpdir,
390392
totalmem: getTotalMem,
393+
maxmem: getConstrainedMem,
391394
type: getOSType,
392395
userInfo,
393396
uptime: getUptime,

src/node_os.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,10 @@ static void GetTotalMemory(const FunctionCallbackInfo<Value>& args) {
146146
args.GetReturnValue().Set(amount);
147147
}
148148

149+
static void GetConstrainedMemory(const FunctionCallbackInfo<Value>& args) {
150+
double amount = static_cast<double>(uv_get_constrained_memory());
151+
args.GetReturnValue().Set(amount);
152+
}
149153

150154
static void GetUptime(const FunctionCallbackInfo<Value>& args) {
151155
Environment* env = Environment::GetCurrent(args);
@@ -394,6 +398,7 @@ void Initialize(Local<Object> target,
394398
SetMethod(context, target, "getLoadAvg", GetLoadAvg);
395399
SetMethod(context, target, "getUptime", GetUptime);
396400
SetMethod(context, target, "getTotalMem", GetTotalMemory);
401+
SetMethod(context, target, "getConstrainedMem", GetConstrainedMemory);
397402
SetMethod(context, target, "getFreeMem", GetFreeMemory);
398403
SetMethod(context, target, "getCPUs", GetCPUInfo);
399404
SetMethod(context, target, "getInterfaceAddresses", GetInterfaceAddresses);
@@ -416,6 +421,7 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
416421
registry->Register(GetLoadAvg);
417422
registry->Register(GetUptime);
418423
registry->Register(GetTotalMemory);
424+
registry->Register(GetConstrainedMemory);
419425
registry->Register(GetFreeMemory);
420426
registry->Register(GetCPUInfo);
421427
registry->Register(GetInterfaceAddresses);

typings/internalBinding/os.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export interface OSBinding {
77
getLoadAvg(array: Float64Array): void;
88
getUptime(): number;
99
getTotalMem(): number;
10+
getConstrainedMem(): number;
1011
getFreeMem(): number;
1112
getCPUs(): Array<string | number>;
1213
getInterfaceAddresses(ctx: InternalOSBinding.OSContext): Array<string | number | boolean> | undefined;

0 commit comments

Comments
 (0)