network: make Request object take Manager*
Previously, even though all Request object are owned by Manager, they do not have direct reference to Manager, but through Link or NetDev object. But, as Link or NetDev can be NULL, we need to conditionalize how to access Manager from Request with the type of the request. This makes the way simpler, as now Request object has direct reference to Manager. This also rename request_drop() -> request_detach(), as in the previous commit, the reference counter is introduced, so even if a reference of a Request object from Manager is dropped, the object may still alive. The naming `request_drop()` sounds the object will freed by the function. But it may not. And `request_detach()` suggests the object will not be managed by Manager any more, and I think it is more appropreate. This is just a cleanup, and should not change any behavior.
This commit is contained in:
@@ -46,7 +46,9 @@ typedef enum RequestType {
|
||||
typedef struct Request {
|
||||
unsigned n_ref;
|
||||
|
||||
Link *link;
|
||||
Manager *manager; /* must be non-NULL */
|
||||
Link *link; /* can be NULL */
|
||||
|
||||
RequestType type;
|
||||
bool consume_object;
|
||||
union {
|
||||
@@ -74,7 +76,7 @@ Request *request_ref(Request *req);
|
||||
Request *request_unref(Request *req);
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Request*, request_unref);
|
||||
|
||||
void request_drop(Request *req);
|
||||
void request_detach(Manager *manager, Request *req);
|
||||
|
||||
int netdev_queue_request(
|
||||
NetDev *netdev,
|
||||
|
||||
Reference in New Issue
Block a user