26
26
unload_driver/1, unload/1, reload/2, reload_driver/2,
27
27
format_error/1,info/1,info/0, start/0, stop/0]).
29
%%----------------------------------------------------------------------------
30
%% No reason to provide contracts for the first two functions
31
-spec start() -> {'error', {'already_started', 'undefined'}}.
33
{error,{already_started,undefined}}.
34
{error, {already_started,undefined}}.
38
-spec(load_driver/2 :: (
39
Path :: string() | atom(),
40
Driver :: string() | atom()) ->
41
'ok' | {'error', any()}).
41
-spec load_driver(Path :: string() | atom(), Driver :: string() | atom()) ->
42
'ok' | {'error', any()}.
43
44
load_driver(Path, Driver) ->
44
45
do_load_driver(Path, Driver, [{driver_options,[kill_ports]}]).
47
Path :: string() | atom(),
48
Driver :: string() | atom()) ->
49
'ok' | {'error', any()}).
47
-spec load(Path :: string() | atom(), Driver :: string() | atom()) ->
48
'ok' | {'error', any()}.
51
50
load(Path, Driver) ->
52
51
do_load_driver(Path, Driver, []).
98
-spec(unload_driver/1 :: (Driver :: string() | atom()) ->
99
'ok' | {'error', any()}).
97
-spec unload_driver(Driver :: string() | atom()) -> 'ok' | {'error', any()}.
102
99
unload_driver(Driver) ->
103
100
do_unload_driver(Driver,[{monitor,pending_driver},kill_ports]).
105
-spec(unload/1 :: (Driver :: string() | atom()) ->
106
'ok' | {'error', any()}).
102
-spec unload(Driver :: string() | atom()) -> 'ok' | {'error', any()}.
108
104
unload(Driver) ->
109
105
do_unload_driver(Driver,[]).
112
Path :: string() | atom(),
113
Driver :: string() | atom()) ->
114
'ok' | {'error', any()}).
107
-spec reload(Path :: string() | atom(), Driver :: string() | atom()) ->
108
'ok' | {'error', any()}.
116
110
reload(Path,Driver) ->
117
111
do_load_driver(Path, Driver, [{reload,pending_driver}]).
119
-spec(reload_driver/2 :: (
120
Path :: string() | atom(),
121
Driver :: string() | atom()) ->
122
'ok' | {'error', any()}).
113
-spec reload_driver(Path :: string() | atom(), Driver :: string() | atom()) ->
114
'ok' | {'error', any()}.
124
116
reload_driver(Path,Driver) ->
125
117
do_load_driver(Path, Driver, [{reload,pending_driver},
126
118
{driver_options,[kill_ports]}]).
128
-spec(format_error/1 :: (Code :: atom()) -> string()).
120
-spec format_error(Code :: atom()) -> string().
130
122
format_error(Code) ->
137
129
erl_ddll:format_error_int(Code)
140
-spec(info/1 :: (Driver :: string() | atom()) ->
132
-spec info(Driver :: string() | atom()) -> [{atom(), any()}].
144
135
[{processes, erl_ddll:info(Driver,processes)},
149
140
{awaiting_load, erl_ddll:info(Driver,awaiting_load)},
150
141
{awaiting_unload, erl_ddll:info(Driver,awaiting_unload)}].
152
-spec(info/0 :: () ->
153
[{string(), [{atom(), any()}]}]).
143
-spec info() -> [{string(), [{atom(), any()}]}].
156
146
{ok,DriverList} = erl_ddll:loaded_drivers(),