20ab67608a
Currently, there is no way to know if the power management env is supported without trying to initialize it. The init API also does not distinguish between failure due to some error and failure due to power management not being available on the platform in the first place. Thus, add an API that provides capability of probing support for a specific power management API. Suggested-by: Jerin Jacob <jerinj@marvell.com> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
136 lines
2.7 KiB
C
136 lines
2.7 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2010-2014 Intel Corporation
|
|
*/
|
|
#ifndef _GUEST_CHANNEL_H
|
|
#define _GUEST_CHANNEL_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <channel_commands.h>
|
|
|
|
/**
|
|
* Check if any Virtio-Serial VM end-points exist in path.
|
|
*
|
|
* @param path
|
|
* The path to the serial device on the filesystem
|
|
*
|
|
* @return
|
|
* - 1 if at least one potential end-point found.
|
|
* - 0 if no end-points found.
|
|
*/
|
|
int guest_channel_host_check_exists(const char *path);
|
|
|
|
/**
|
|
* Connect to the Virtio-Serial VM end-point located in path. It is
|
|
* thread safe for unique lcore_ids. This function must be only called once from
|
|
* each lcore.
|
|
*
|
|
* @param path
|
|
* The path to the serial device on the filesystem
|
|
*
|
|
* @param lcore_id
|
|
* lcore_id.
|
|
*
|
|
* @return
|
|
* - 0 on success.
|
|
* - Negative on error.
|
|
*/
|
|
int guest_channel_host_connect(const char *path, unsigned int lcore_id);
|
|
|
|
/**
|
|
* Disconnect from an already connected Virtio-Serial Endpoint.
|
|
*
|
|
*
|
|
* @param lcore_id
|
|
* lcore_id.
|
|
*
|
|
*/
|
|
void guest_channel_host_disconnect(unsigned int lcore_id);
|
|
|
|
/**
|
|
* Send a message contained in pkt over the Virtio-Serial to the host endpoint.
|
|
*
|
|
* @param pkt
|
|
* Pointer to a populated struct guest_agent_pkt
|
|
*
|
|
* @param lcore_id
|
|
* lcore_id.
|
|
*
|
|
* @return
|
|
* - 0 on success.
|
|
* - Negative on channel not connected.
|
|
* - errno on write to channel error.
|
|
*/
|
|
int guest_channel_send_msg(struct channel_packet *pkt, unsigned int lcore_id);
|
|
|
|
/**
|
|
* Send a message contained in pkt over the Virtio-Serial to the host endpoint.
|
|
*
|
|
* @param pkt
|
|
* Pointer to a populated struct channel_packet
|
|
*
|
|
* @param lcore_id
|
|
* lcore_id.
|
|
*
|
|
* @return
|
|
* - 0 on success.
|
|
* - Negative on error.
|
|
*/
|
|
int rte_power_guest_channel_send_msg(struct channel_packet *pkt,
|
|
unsigned int lcore_id);
|
|
|
|
/**
|
|
* Read a message contained in pkt over the Virtio-Serial
|
|
* from the host endpoint.
|
|
*
|
|
* @param pkt
|
|
* Pointer to channel_packet or
|
|
* channel_packet_freq_list struct.
|
|
*
|
|
* @param pkt_len
|
|
* Size of expected data packet.
|
|
*
|
|
* @param lcore_id
|
|
* lcore_id.
|
|
*
|
|
* @return
|
|
* - 0 on success.
|
|
* - Negative on error.
|
|
*/
|
|
int power_guest_channel_read_msg(void *pkt,
|
|
size_t pkt_len,
|
|
unsigned int lcore_id);
|
|
|
|
/**
|
|
* Receive a message contained in pkt over the Virtio-Serial
|
|
* from the host endpoint.
|
|
*
|
|
* @param pkt
|
|
* Pointer to channel_packet or
|
|
* channel_packet_freq_list struct.
|
|
*
|
|
* @param pkt_len
|
|
* Size of expected data packet.
|
|
*
|
|
* @param lcore_id
|
|
* lcore_id.
|
|
*
|
|
* @return
|
|
* - 0 on success.
|
|
* - Negative on error.
|
|
*/
|
|
__rte_experimental
|
|
int
|
|
rte_power_guest_channel_receive_msg(void *pkt,
|
|
size_t pkt_len,
|
|
unsigned int lcore_id);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|