aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_alloc.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2018-01-23 22:26:44 +0100
committerSverker Eriksson <[email protected]>2018-02-08 17:42:53 +0100
commit443b2e0fabe9dfbe78d7fe857b29e74f7533da39 (patch)
treeedbf68f40264173f2720f170b401a57d16c1651b /erts/emulator/beam/erl_alloc.c
parente64a1f429ec5f7534e0201fed42967aeb1aae8d8 (diff)
downloadotp-443b2e0fabe9dfbe78d7fe857b29e74f7533da39.tar.gz
otp-443b2e0fabe9dfbe78d7fe857b29e74f7533da39.tar.bz2
otp-443b2e0fabe9dfbe78d7fe857b29e74f7533da39.zip
erts: Add migration options "acnl" and "acfml"
acnl: Abandon Carrier Nr Limit acfml: Abandon Carrier Free block Min Limit
Diffstat (limited to 'erts/emulator/beam/erl_alloc.c')
-rw-r--r--erts/emulator/beam/erl_alloc.c36
1 files changed, 24 insertions, 12 deletions
diff --git a/erts/emulator/beam/erl_alloc.c b/erts/emulator/beam/erl_alloc.c
index 214fb1f2af..b51cf5bdfc 100644
--- a/erts/emulator/beam/erl_alloc.c
+++ b/erts/emulator/beam/erl_alloc.c
@@ -1372,18 +1372,30 @@ handle_au_arg(struct au_init *auip,
switch (sub_param[0]) {
case 'a':
- if (has_prefix("acul", sub_param)) {
- if (!auip->carrier_migration_allowed) {
- if (!u_switch)
- goto bad_switch;
- else {
- /* ignore */
- (void) get_acul_value(auip, sub_param + 4, argv, ip);
- break;
- }
- }
- auip->init.util.acul = get_acul_value(auip, sub_param + 4, argv, ip);
- }
+ if (sub_param[1] == 'c') { /* Migration parameters "ac*" */
+ UWord value;
+ UWord* wp;
+ if (!auip->carrier_migration_allowed && !u_switch)
+ goto bad_switch;
+
+ if (has_prefix("acul", sub_param)) {
+ value = get_acul_value(auip, sub_param + 4, argv, ip);
+ wp = &auip->init.util.acul;
+ }
+ else if (has_prefix("acnl", sub_param)) {
+ value = get_amount_value(sub_param + 4, argv, ip);
+ wp = &auip->init.util.acnl;
+ }
+ else if (has_prefix("acfml", sub_param)) {
+ value = get_amount_value(sub_param + 5, argv, ip);
+ wp = &auip->init.util.acfml;
+ }
+ else
+ goto bad_switch;
+
+ if (auip->carrier_migration_allowed)
+ *wp = value;
+ }
else if(has_prefix("asbcst", sub_param)) {
auip->init.util.asbcst = get_kb_value(sub_param + 6, argv, ip);
}