mirror of
https://github.com/ipxe/ipxe
synced 2025-12-25 17:12:40 +03:00
[process] Pass containing object pointer to process step() methods
Give the step() method a pointer to the containing object, rather than a pointer to the process. This is consistent with the operation of interface methods, and allows a single function to serve as both an interface method and a process step() method. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -483,11 +483,9 @@ static int http_socket_deliver ( struct http_request *http,
|
||||
/**
|
||||
* HTTP process
|
||||
*
|
||||
* @v process Process
|
||||
* @v http HTTP request
|
||||
*/
|
||||
static void http_step ( struct process *process ) {
|
||||
struct http_request *http =
|
||||
container_of ( process, struct http_request, process );
|
||||
static void http_step ( struct http_request *http ) {
|
||||
const char *host = http->uri->host;
|
||||
const char *user = http->uri->user;
|
||||
const char *password =
|
||||
@@ -561,6 +559,10 @@ static struct interface_descriptor http_xfer_desc =
|
||||
INTF_DESC_PASSTHRU ( struct http_request, xfer,
|
||||
http_xfer_operations, socket );
|
||||
|
||||
/** HTTP process descriptor */
|
||||
static struct process_descriptor http_process_desc =
|
||||
PROC_DESC ( struct http_request, process, http_step );
|
||||
|
||||
/**
|
||||
* Initiate an HTTP connection, with optional filter
|
||||
*
|
||||
@@ -591,7 +593,7 @@ int http_open_filter ( struct interface *xfer, struct uri *uri,
|
||||
intf_init ( &http->xfer, &http_xfer_desc, &http->refcnt );
|
||||
http->uri = uri_get ( uri );
|
||||
intf_init ( &http->socket, &http_socket_desc, &http->refcnt );
|
||||
process_init ( &http->process, http_step, &http->refcnt );
|
||||
process_init ( &http->process, &http_process_desc, &http->refcnt );
|
||||
|
||||
/* Open socket */
|
||||
memset ( &server, 0, sizeof ( server ) );
|
||||
|
||||
@@ -1427,9 +1427,7 @@ static void iscsi_tx_done ( struct iscsi_session *iscsi ) {
|
||||
*
|
||||
* Constructs data to be sent for the current TX state
|
||||
*/
|
||||
static void iscsi_tx_step ( struct process *process ) {
|
||||
struct iscsi_session *iscsi =
|
||||
container_of ( process, struct iscsi_session, process );
|
||||
static void iscsi_tx_step ( struct iscsi_session *iscsi ) {
|
||||
struct iscsi_bhs_common *common = &iscsi->tx_bhs.common;
|
||||
int ( * tx ) ( struct iscsi_session *iscsi );
|
||||
enum iscsi_tx_state next_state;
|
||||
@@ -1488,6 +1486,10 @@ static void iscsi_tx_step ( struct process *process ) {
|
||||
}
|
||||
}
|
||||
|
||||
/** iSCSI TX process descriptor */
|
||||
static struct process_descriptor iscsi_process_desc =
|
||||
PROC_DESC ( struct iscsi_session, process, iscsi_tx_step );
|
||||
|
||||
/**
|
||||
* Receive basic header segment of an iSCSI PDU
|
||||
*
|
||||
@@ -2034,7 +2036,7 @@ static int iscsi_open ( struct interface *parent, struct uri *uri ) {
|
||||
intf_init ( &iscsi->control, &iscsi_control_desc, &iscsi->refcnt );
|
||||
intf_init ( &iscsi->data, &iscsi_data_desc, &iscsi->refcnt );
|
||||
intf_init ( &iscsi->socket, &iscsi_socket_desc, &iscsi->refcnt );
|
||||
process_init_stopped ( &iscsi->process, iscsi_tx_step,
|
||||
process_init_stopped ( &iscsi->process, &iscsi_process_desc,
|
||||
&iscsi->refcnt );
|
||||
|
||||
/* Parse root path */
|
||||
|
||||
Reference in New Issue
Block a user