Spdk/python/spdk/rpc/app.py
Konrad Sztyber 7610bc38dc scripts: move python modules to python directory
Up until now, importing an SPDK RPC python module was just a matter of
`import rpc`.  It's fine until there's another module called `rpc`
installed on the system, in which case it's impossible to import both of
them.  Therefore, to avoid this problem, all of the modules were moved
to a separate directory under the "spdk" namespace.

The decision to move to a location under a separate directory was
motivated by the fact that a directory called scripts/spdk would look
pretty confusing.  Moreover, it should make it also easier to package
these scripts as a python package.

Other than moving the packages, all of the imports were updated to
reflect these changes.  Files under python now use relative imports,
while those under scripts/ use the "spdk" namespace and have their
PYTHONPATH extended with python directory.

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: Ib43dee73921d590a551dd83885e22870e72451cf
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9692
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2022-04-05 14:40:47 +00:00

123 lines
3.0 KiB
Python

from .helpers import deprecated_alias
@deprecated_alias('kill_instance')
def spdk_kill_instance(client, sig_name):
"""Send a signal to the SPDK process.
Args:
sig_name: signal to send ("SIGINT", "SIGTERM", "SIGQUIT", "SIGHUP", or "SIGKILL")
"""
params = {'sig_name': sig_name}
return client.call('spdk_kill_instance', params)
@deprecated_alias('context_switch_monitor')
def framework_monitor_context_switch(client, enabled=None):
"""Query or set state of context switch monitoring.
Args:
enabled: True to enable monitoring; False to disable monitoring; None to query (optional)
Returns:
Current context switch monitoring state (after applying enabled flag).
"""
params = {}
if enabled is not None:
params['enabled'] = enabled
return client.call('framework_monitor_context_switch', params)
def framework_get_reactors(client):
"""Query list of all reactors.
Returns:
List of all reactors.
"""
return client.call('framework_get_reactors')
def framework_set_scheduler(client, name, period=None, load_limit=None, core_limit=None,
core_busy=None):
"""Select threads scheduler that will be activated and its period.
Args:
name: Name of a scheduler
period: Scheduler period in microseconds
Returns:
True or False
"""
params = {'name': name}
if period is not None:
params['period'] = period
if load_limit is not None:
params['load_limit'] = load_limit
if core_limit is not None:
params['core_limit'] = core_limit
if core_busy is not None:
params['core_busy'] = core_busy
return client.call('framework_set_scheduler', params)
def framework_get_scheduler(client):
"""Query currently set scheduler.
Returns:
Name, period (in microseconds) of currently set scheduler and name of currently set governor.
"""
return client.call('framework_get_scheduler')
def thread_get_stats(client):
"""Query threads statistics.
Returns:
Current threads statistics.
"""
return client.call('thread_get_stats')
def thread_set_cpumask(client, id, cpumask):
"""Set the cpumask of the thread whose ID matches to the specified value.
Args:
id: thread ID
cpumask: cpumask for this thread
Returns:
True or False
"""
params = {'id': id, 'cpumask': cpumask}
return client.call('thread_set_cpumask', params)
def log_enable_timestamps(client, enabled):
"""Enable or disable timestamps.
Args:
value: on or off
Returns:
None
"""
params = {'enabled': enabled}
return client.call('log_enable_timestamps', params)
def thread_get_pollers(client):
"""Query current pollers.
Returns:
Current pollers.
"""
return client.call('thread_get_pollers')
def thread_get_io_channels(client):
"""Query current IO channels.
Returns:
Current IO channels.
"""
return client.call('thread_get_io_channels')