From de3b0fb8c0573662a9fa464d7c9b6c5f9cf5a4c9 Mon Sep 17 00:00:00 2001 From: huangdan Date: Mon, 1 Jun 2015 23:13:34 +0800 Subject: [PATCH] ports_type --- apps/emqttd/src/emqttd_vm.erl | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/apps/emqttd/src/emqttd_vm.erl b/apps/emqttd/src/emqttd_vm.erl index 9eb5374ad..84add1311 100644 --- a/apps/emqttd/src/emqttd_vm.erl +++ b/apps/emqttd/src/emqttd_vm.erl @@ -70,18 +70,23 @@ -author("Feng Lee "). -export([loads/0, - scheduler_usage/1, - get_memory/0, - get_process_list/0, + scheduler_usage/1]). + +-export([get_memory/0]). + +-export([get_process_list/0, get_process_info/0, get_process_gc/0, - get_process_group_leader_info/1, - get_ets_list/0, + get_process_group_leader_info/1]). + +-export([get_ets_list/0, get_ets_info/0, get_ets_info/1, get_ets_object/0, - get_ets_object/1 - ]). + get_ets_object/1]). + +-export([get_port_types/0]). + loads() -> [{load1, ftos(cpu_sup:avg1()/256)}, @@ -216,6 +221,20 @@ get_ets_object(Tab) -> ets:tab2list(Tab) end. +get_port_types() -> + lists:usort(fun({KA, VA},{KB, VB})-> {VA, KB} >{VB, KA} end, + ports_type_count([Type || {_Port, Type} <- ports_type_list()])). + +ports_type_list() -> + [{Port, PortType} || Port <- erlang:ports(), + {_, PortType} <- [erlang:port_info(Port, name)]]. + +ports_type_count(Types) -> + DictTypes = lists:foldl(fun(Type, Acc)-> + dict:update_counter(Type, 1, Acc) + end, dict:new(), Types), + dict:to_list(DictTypes). + mapping(Entries) -> mapping(Entries, []). mapping([], Acc) ->