[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [UNIKRAFT PATCH v2 3/9] lib/uk9p: Delete the old serialization



Reviewed-by: Costin Lupu <costin.lupu@xxxxxxxxx>

On 5/9/20 7:44 PM, Cristian Banu wrote:
> This patch deletes the old serialization implementation and removes
> the functions from exportsyms.uk.
> 
> Signed-off-by: Cristian Banu <cristb@xxxxxxxxx>
> ---
>  lib/uk9p/9pdev.c            |  36 -----
>  lib/uk9p/9preq.c            | 287 ------------------------------------
>  lib/uk9p/exportsyms.uk      |   7 -
>  lib/uk9p/include/uk/9pdev.h |  23 ---
>  lib/uk9p/include/uk/9preq.h |  55 -------
>  5 files changed, 408 deletions(-)
> 
> diff --git a/lib/uk9p/9pdev.c b/lib/uk9p/9pdev.c
> index 14ea7ca..1d7e09b 100644
> --- a/lib/uk9p/9pdev.c
> +++ b/lib/uk9p/9pdev.c
> @@ -288,42 +288,6 @@ void uk_9pdev_xmit_notify(struct uk_9pdev *dev)
>  #endif
>  }
>  
> -struct uk_9preq *uk_9pdev_call(struct uk_9pdev *dev, uint8_t type,
> -                     uint32_t size, const char *fmt, ...)
> -{
> -     struct uk_9preq *req;
> -     va_list vl;
> -     int rc;
> -
> -     req = uk_9pdev_req_create(dev, type, size);
> -     if (PTRISERR(req))
> -             return req;
> -
> -     va_start(vl, fmt);
> -     rc = uk_9preq_vserialize(req, fmt, vl);
> -     va_end(vl);
> -
> -     if (rc < 0)
> -             goto out;
> -
> -     rc = uk_9preq_ready(req, UK_9PREQ_ZCDIR_NONE, NULL, 0, 0);
> -     if (rc < 0)
> -             goto out;
> -
> -     rc = uk_9pdev_request(dev, req);
> -     if (rc < 0)
> -             goto out;
> -
> -     rc = uk_9preq_waitreply(req);
> -     if (rc < 0)
> -             goto out;
> -
> -     return req;
> -out:
> -     uk_9pdev_req_remove(dev, req);
> -     return ERR2PTR(rc);
> -}
> -
>  struct uk_9preq *uk_9pdev_req_create(struct uk_9pdev *dev, uint8_t type,
>                               uint32_t size)
>  {
> diff --git a/lib/uk9p/9preq.c b/lib/uk9p/9preq.c
> index 8d787e7..997f772 100644
> --- a/lib/uk9p/9preq.c
> +++ b/lib/uk9p/9preq.c
> @@ -138,293 +138,6 @@ int uk_9preq_put(struct uk_9preq *req)
>       return last;
>  }
>  
> -static int _fcall_write(struct uk_9preq_fcall *fcall, const void *buf,
> -             uint32_t size)
> -{
> -     if (fcall->offset + size > fcall->size)
> -             return -ENOBUFS;
> -
> -     memcpy((char *)fcall->buf + fcall->offset, buf, size);
> -     fcall->offset += size;
> -     return 0;
> -}
> -
> -static int _fcall_serialize(struct uk_9preq_fcall *f, const char *fmt, ...);
> -
> -static int _fcall_vserialize(struct uk_9preq_fcall *fcall, const char *fmt,
> -                     va_list vl)
> -{
> -     int rc = 0;
> -
> -     while (*fmt) {
> -             switch (*fmt) {
> -             case 'b': {
> -                     uint8_t x;
> -
> -                     x = va_arg(vl, unsigned int);
> -                     rc = _fcall_write(fcall, &x, sizeof(x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'w': {
> -                     uint16_t x;
> -
> -                     x = va_arg(vl, unsigned int);
> -                     rc = _fcall_write(fcall, &x, sizeof(x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'd': {
> -                     uint32_t x;
> -
> -                     x = va_arg(vl, uint32_t);
> -                     rc = _fcall_write(fcall, &x, sizeof(x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'q': {
> -                     uint64_t x;
> -
> -                     x = va_arg(vl, uint64_t);
> -                     rc = _fcall_write(fcall, &x, sizeof(x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 's': {
> -                     struct uk_9p_str *p;
> -
> -                     p = va_arg(vl, struct uk_9p_str *);
> -                     rc = _fcall_write(fcall, &p->size, sizeof(p->size));
> -                     if (rc < 0)
> -                             goto out;
> -                     rc = _fcall_write(fcall, p->data, p->size);
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'Q': {
> -                     struct uk_9p_qid *p;
> -
> -                     p = va_arg(vl, struct uk_9p_qid *);
> -                     rc = _fcall_serialize(fcall, "bdq", p->type,
> -                                     p->version, p->path);
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'S': {
> -                     struct uk_9p_stat *p;
> -
> -                     p = va_arg(vl, struct uk_9p_stat *);
> -                     rc = _fcall_serialize(fcall, "wwdQdddqsssssddd",
> -                                     p->size, p->type, p->dev, &p->qid,
> -                                     p->mode, p->atime, p->mtime, p->length,
> -                                     &p->name, &p->uid, &p->gid, &p->muid,
> -                                     &p->extension, p->n_uid, p->n_gid,
> -                                     p->n_muid);
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             default:
> -                     rc = -EINVAL;
> -                     goto out;
> -             }
> -
> -             fmt++;
> -     }
> -
> -out:
> -     return rc;
> -}
> -
> -static int _fcall_serialize(struct uk_9preq_fcall *f, const char *fmt, ...)
> -{
> -     va_list vl;
> -     int rc;
> -
> -     va_start(vl, fmt);
> -     rc = _fcall_vserialize(f, fmt, vl);
> -     va_end(vl);
> -
> -     return rc;
> -}
> -
> -int uk_9preq_vserialize(struct uk_9preq *req, const char *fmt, va_list vl)
> -{
> -     int rc;
> -
> -     UK_ASSERT(req);
> -     UK_ASSERT(UK_READ_ONCE(req->state) == UK_9PREQ_INITIALIZED);
> -     rc = _fcall_vserialize(&req->xmit, fmt, vl);
> -
> -     return rc;
> -}
> -
> -int uk_9preq_serialize(struct uk_9preq *req, const char *fmt, ...)
> -{
> -     va_list vl;
> -     int rc;
> -
> -     va_start(vl, fmt);
> -     rc = uk_9preq_vserialize(req, fmt, vl);
> -     va_end(vl);
> -
> -     return rc;
> -}
> -
> -static int _fcall_read(struct uk_9preq_fcall *fcall, void *buf, uint32_t 
> size)
> -{
> -     if (fcall->offset + size > fcall->size)
> -             return -ENOBUFS;
> -
> -     memcpy(buf, (char *)fcall->buf + fcall->offset, size);
> -     fcall->offset += size;
> -     return 0;
> -}
> -
> -static int _fcall_deserialize(struct uk_9preq_fcall *f, const char *fmt, 
> ...);
> -
> -static int _fcall_vdeserialize(struct uk_9preq_fcall *fcall,
> -                           const char *fmt,
> -                           va_list vl)
> -{
> -     int rc = 0;
> -
> -     while (*fmt) {
> -             switch (*fmt) {
> -             case 'b': {
> -                     uint8_t *x;
> -
> -                     x = va_arg(vl, uint8_t *);
> -                     rc = _fcall_read(fcall, x, sizeof(*x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'w': {
> -                     uint16_t *x;
> -
> -                     x = va_arg(vl, uint16_t *);
> -                     rc = _fcall_read(fcall, x, sizeof(*x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'd': {
> -                     uint32_t *x;
> -
> -                     x = va_arg(vl, uint32_t *);
> -                     rc = _fcall_read(fcall, x, sizeof(*x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'q': {
> -                     uint64_t *x;
> -
> -                     x = va_arg(vl, uint64_t *);
> -                     rc = _fcall_read(fcall, x, sizeof(*x));
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 's': {
> -                     struct uk_9p_str *p;
> -
> -                     p = va_arg(vl, struct uk_9p_str *);
> -                     rc = _fcall_read(fcall, &p->size, sizeof(p->size));
> -                     if (rc < 0)
> -                             goto out;
> -                     p->data = (char *)fcall->buf + fcall->offset;
> -                     fcall->offset += p->size;
> -                     break;
> -             }
> -             case 'Q': {
> -                     struct uk_9p_qid *p;
> -
> -                     p = va_arg(vl, struct uk_9p_qid *);
> -                     rc = _fcall_deserialize(fcall, "bdq", &p->type,
> -                                     &p->version, &p->path);
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             case 'S': {
> -                     struct uk_9p_stat *p;
> -
> -                     p = va_arg(vl, struct uk_9p_stat *);
> -                     rc = _fcall_deserialize(fcall, "wwdQdddqsssssddd",
> -                                     &p->size, &p->type, &p->dev, &p->qid,
> -                                     &p->mode, &p->atime, &p->mtime,
> -                                     &p->length, &p->name, &p->uid, &p->gid,
> -                                     &p->muid, &p->extension, &p->n_uid,
> -                                     &p->n_gid, &p->n_muid);
> -                     if (rc < 0)
> -                             goto out;
> -                     break;
> -             }
> -             default:
> -                     rc = -EINVAL;
> -                     goto out;
> -             }
> -
> -             fmt++;
> -     }
> -
> -out:
> -     return rc;
> -}
> -
> -static int _fcall_deserialize(struct uk_9preq_fcall *f, const char *fmt, ...)
> -{
> -     va_list vl;
> -     int rc;
> -
> -     va_start(vl, fmt);
> -     rc = _fcall_vdeserialize(f, fmt, vl);
> -     va_end(vl);
> -
> -     return rc;
> -}
> -
> -int uk_9preq_vdeserialize(struct uk_9preq *req, const char *fmt, va_list vl)
> -{
> -     int rc;
> -
> -     UK_ASSERT(req);
> -     UK_ASSERT(UK_READ_ONCE(req->state) == UK_9PREQ_RECEIVED);
> -     rc = _fcall_vdeserialize(&req->recv, fmt, vl);
> -
> -     return rc;
> -}
> -
> -int uk_9preq_deserialize(struct uk_9preq *req, const char *fmt, ...)
> -{
> -     va_list vl;
> -     int rc;
> -
> -     va_start(vl, fmt);
> -     rc = uk_9preq_vdeserialize(req, fmt, vl);
> -     va_end(vl);
> -
> -     return rc;
> -}
> -
> -int uk_9preq_copy_to(struct uk_9preq *req, void *buf, uint32_t size)
> -{
> -     return _fcall_read(&req->recv, buf, size);
> -}
> -
> -int uk_9preq_copy_from(struct uk_9preq *req, const void *buf, uint32_t size)
> -{
> -     return _fcall_write(&req->xmit, buf, size);
> -}
> -
>  int uk_9preq_ready(struct uk_9preq *req, enum uk_9preq_zcdir zc_dir,
>               void *zc_buf, uint32_t zc_size, uint32_t zc_offset)
>  {
> diff --git a/lib/uk9p/exportsyms.uk b/lib/uk9p/exportsyms.uk
> index aae9e8a..7f8e7dd 100644
> --- a/lib/uk9p/exportsyms.uk
> +++ b/lib/uk9p/exportsyms.uk
> @@ -5,12 +5,6 @@ uk_9pdev_trans_set_default
>  
>  uk_9preq_get
>  uk_9preq_put
> -uk_9preq_vserialize
> -uk_9preq_serialize
> -uk_9preq_vdeserialize
> -uk_9preq_deserialize
> -uk_9preq_copy_to
> -uk_9preq_copy_from
>  uk_9preq_receive_cb
>  uk_9preq_waitreply
>  uk_9preq_error
> @@ -19,7 +13,6 @@ uk_9pdev_connect
>  uk_9pdev_disconnect
>  uk_9pdev_request
>  uk_9pdev_xmit_notify
> -uk_9pdev_call
>  uk_9pdev_set_msize
>  uk_9pdev_get_msize
>  
> diff --git a/lib/uk9p/include/uk/9pdev.h b/lib/uk9p/include/uk/9pdev.h
> index 139498f..04ff523 100644
> --- a/lib/uk9p/include/uk/9pdev.h
> +++ b/lib/uk9p/include/uk/9pdev.h
> @@ -107,29 +107,6 @@ int uk_9pdev_request(struct uk_9pdev *dev, struct 
> uk_9preq *req);
>   */
>  void uk_9pdev_xmit_notify(struct uk_9pdev *dev);
>  
> -/**
> - * Creates and sends 9P request to the given 9P device, serializing it with
> - * the given arguments. This function acts as a shorthand for the explicit
> - * calls to req_create(), serialize(), ready(), request(), waitreply().
> - *
> - * @param dev
> - *   The Unikraft 9P Device.
> - * @param type
> - *   Transmit type of the request, e.g. Tversion, Tread, and so on.
> - * @param size
> - *   The maximum size for the receive and send buffers.
> - * @param fmt
> - *   The format of the data to be serialized, in the way uk_9preq_serialize()
> - *   expects it.
> - * @param ...
> - *   The arguments to be serialized.
> - * @return
> - *   - (!PTRISERR): The 9p request in the UK_9PREQ_RECEIVED state.
> - *   - PTRISERR: The error code with which any of the steps failed.
> - */
> -struct uk_9preq *uk_9pdev_call(struct uk_9pdev *dev, uint8_t type,
> -                     uint32_t size, const char *fmt, ...);
> -
>  /**
>   * Create a new request, automatically allocating its tag, based on its type.
>   *
> diff --git a/lib/uk9p/include/uk/9preq.h b/lib/uk9p/include/uk/9preq.h
> index 70c1b03..b9713e2 100644
> --- a/lib/uk9p/include/uk/9preq.h
> +++ b/lib/uk9p/include/uk/9preq.h
> @@ -182,61 +182,6 @@ void uk_9preq_get(struct uk_9preq *req);
>   */
>  int uk_9preq_put(struct uk_9preq *req);
>  
> -/*
> - * The following family of serialization and deserialization functions work
> - * by employing a printf-like formatting mechanism for data types supported 
> by
> - * the 9p protocol:
> - * - 'b': byte (uint8_t)
> - * - 'w': word (uint16_t)
> - * - 'd': double-word (uint32_t)
> - * - 'q': quad-word (uint64_t)
> - * - 's': uk_9p_str *
> - * - 'S': uk_9p_stat *
> - *
> - * Similarly to vprintf(), the vserialize() and vdeserialize() functions take
> - * a va_list instead of a variable number of arguments.
> - *
> - * Possible return values:
> - * - 0: Operation successful.
> - * - (-EINVAL): Invalid format specifier.
> - * - (-ENOBUFS): End of buffer reached.
> - */
> -
> -int uk_9preq_vserialize(struct uk_9preq *req, const char *fmt, va_list vl);
> -int uk_9preq_serialize(struct uk_9preq *req, const char *fmt, ...);
> -int uk_9preq_vdeserialize(struct uk_9preq *req, const char *fmt, va_list vl);
> -int uk_9preq_deserialize(struct uk_9preq *req, const char *fmt, ...);
> -
> -/**
> - * Copies raw data from the request receive buffer to the provided buffer.
> - *
> - * @param req
> - *   Reference to the 9p request.
> - * @param buf
> - *   Destination buffer.
> - * @param size
> - *   Amount to copy.
> - * Possible return values:
> - * - 0: Operation successful.
> - * - (-ENOBUFS): End of buffer reached.
> - */
> -int uk_9preq_copy_to(struct uk_9preq *req, void *buf, uint32_t size);
> -
> -/**
> - * Copies raw data from the provided buffer to the request transmission 
> buffer.
> - *
> - * @param req
> - *   Reference to the 9p request.
> - * @param buf
> - *   Source buffer.
> - * @param size
> - *   Amount to copy.
> - * Possible return values:
> - * - 0: Operation successful.
> - * - (-ENOBUFS): End of buffer reached.
> - */
> -int uk_9preq_copy_from(struct uk_9preq *req, const void *buf, uint32_t size);
> -
>  /**
>   * Marks the given request as being ready, transitioning between states
>   * INITIALIZED and READY.
> 



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.