aboutsummaryrefslogtreecommitdiffstats
path: root/erts
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2012-04-30 16:52:47 +0200
committerBjörn-Egil Dahlberg <[email protected]>2012-04-30 16:52:47 +0200
commit50176a20c64ccd98a5d534b3c388593ff654fc8e (patch)
treec8fb4d1e0063ee47470808bb3f52b30e73d818a2 /erts
parent57dffc2e9adffd5834a18f837b7d06edf8de8e92 (diff)
parentbabe4b00f642b352f855f4d2e894a84825c359d9 (diff)
downloadotp-50176a20c64ccd98a5d534b3c388593ff654fc8e.tar.gz
otp-50176a20c64ccd98a5d534b3c388593ff654fc8e.tar.bz2
otp-50176a20c64ccd98a5d534b3c388593ff654fc8e.zip
Merge branch 'egil/fix-port-io-statistics/OTP-10073' into maint
* egil/fix-port-io-statistics/OTP-10073: erts: Add port-I/O statistics for active once/true
Diffstat (limited to 'erts')
-rw-r--r--erts/emulator/beam/io.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c
index eb8db73bae..204bff299e 100644
--- a/erts/emulator/beam/io.c
+++ b/erts/emulator/beam/io.c
@@ -3260,6 +3260,8 @@ driver_deliver_term(ErlDrvPort port,
Uint size = ptr[1];
Uint offset = ptr[2];
+ erts_smp_atomic_add_nob(&erts_bytes_in, (erts_aint_t) size);
+
if (size <= ERL_ONHEAP_BIN_LIMIT) {
ErlHeapBin* hbp = (ErlHeapBin *) hp;
hp += heap_bin_size(size);
@@ -3291,6 +3293,9 @@ driver_deliver_term(ErlDrvPort port,
case ERL_DRV_BUF2BINARY: { /* char*, size */
byte *bufp = (byte *) ptr[0];
Uint size = (Uint) ptr[1];
+
+ erts_smp_atomic_add_nob(&erts_bytes_in, (erts_aint_t) size);
+
if (size <= ERL_ONHEAP_BIN_LIMIT) {
ErlHeapBin* hbp = (ErlHeapBin *) hp;
hp += heap_bin_size(size);
@@ -3327,6 +3332,7 @@ driver_deliver_term(ErlDrvPort port,
}
case ERL_DRV_STRING: /* char*, length */
+ erts_smp_atomic_add_nob(&erts_bytes_in, (erts_aint_t) ptr[1]);
mess = buf_to_intlist(&hp, (char*)ptr[0], ptr[1], NIL);
ptr += 2;
break;