qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [qemu-devel] [PATCH V2 0/3] [RFC] libqblock draft code


From: Wenchao Xia
Subject: Re: [Qemu-devel] [qemu-devel] [PATCH V2 0/3] [RFC] libqblock draft code v2
Date: Fri, 10 Aug 2012 16:04:38 +0800
User-agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20120713 Thunderbird/14.0

   Thanks for your review, sorry I have forgot some fixing you
mentioned before, will correct them this time.

于 2012-8-10 1:12, Blue Swirl 写道:
On Thu, Aug 9, 2012 at 10:10 AM, Wenchao Xia <address@hidden> wrote:
   This patch intrudce libqblock API, libqblock-test is used as a test case.

V2:
   Using struct_size and [xxx]_new [xxx]_free to keep ABI.
   Using embbed structure to class format options in image creating.
   Format specific options were brought to surface.
   Image format was changed to enum interger instead of string.
   Some API were renamed.
   Internel error with errno was saved and with an API caller can get it.
   ALL flags used were defined in libqblock.h.

Something need discuss:
   Embbed structure or union could make the model more friendly, but that
make ABI more difficult, because we need to check every embbed structure's
size and guess compiler's memory arrangement. This means #pragma pack(4)
or struct_size, offset_next in every structure. Any better way to solve it?
or make every structure a plain one?

I'd still use accessor functions instead of structure passing, it
would avoid these problems.

  Do you mean some function like :
  CreateOption_Filename_Set(const char *filename)
  CreateOption_Format_Set(const char *filename)

  It can solve the issue, with a cost of more small APIs in header
files that user should use. Not sure if there is a good way to make
it more friendly as an object language:
  "oc.filename = name;" automatically call CreateOption_Filename_Set,
API CreateOption_Filename_Set is invisible to user.


Packing can even introduce a new set of problems since we don't
control the CFLAGS of the client of the library.

  indeed, I tried to handle the difference in function qboo_adjust_o2n,
found that structure member alignment is hard to deal.

   AIO is missing, need a prototype.

Wenchao Xia (3):
   adding libqblock
   libqblock API
   libqblock test case

  Makefile         |    3 +
  block.c          |    2 +-
  block.h          |    1 +
  libqblock-test.c |  197 ++++++++++++++++
  libqblock.c      |  670 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
  libqblock.h      |  447 ++++++++++++++++++++++++++++++++++++
  6 files changed, 1319 insertions(+), 1 deletions(-)
  create mode 100644 libqblock-test.c
  create mode 100644 libqblock.c
  create mode 100644 libqblock.h






--
Best Regards

Wenchao Xia




reply via email to

[Prev in Thread] Current Thread [Next in Thread]