This option was used in protocol 1 to generate 64 bit pointers. A pointer in the protocol is an offset in the current message. This allows the possibility to have messages with pointers with more than 4GB. This feature was removed and not used in protocol 2. The reason is that messages more than 4GB would cause: - huge latency as a single message would take more than 4 seconds to be send in a 10Gb connection; - huge memory requirements. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- common/marshaller.c | 14 +++----------- common/marshaller.h | 2 +- python_modules/marshal.py | 2 +- python_modules/ptypes.py | 18 +++--------------- spice_codegen.py | 4 ---- 5 files changed, 8 insertions(+), 32 deletions(-) diff --git a/common/marshaller.c b/common/marshaller.c index 4379aa6..c77129b 100644 --- a/common/marshaller.c +++ b/common/marshaller.c @@ -96,7 +96,6 @@ typedef struct SpiceMarshallerData SpiceMarshallerData; typedef struct { SpiceMarshaller *marshaller; int item_nr; - int is_64bit; size_t offset; } MarshallerRef; @@ -419,13 +418,13 @@ SpiceMarshaller *spice_marshaller_get_submarshaller(SpiceMarshaller *m) return m2; } -SpiceMarshaller *spice_marshaller_get_ptr_submarshaller(SpiceMarshaller *m, int is_64bit) +SpiceMarshaller *spice_marshaller_get_ptr_submarshaller(SpiceMarshaller *m) { SpiceMarshaller *m2; uint8_t *p; int size; - size = is_64bit ? 8 : 4; + size = 4; p = spice_marshaller_reserve_space(m, size); memset(p, 0, size); @@ -433,7 +432,6 @@ SpiceMarshaller *spice_marshaller_get_ptr_submarshaller(SpiceMarshaller *m, int m2->pointer_ref.marshaller = m; m2->pointer_ref.item_nr = m->n_items - 1; m2->pointer_ref.offset = m->items[m->n_items - 1].len - size; - m2->pointer_ref.is_64bit = is_64bit; return m2; } @@ -538,13 +536,7 @@ void spice_marshaller_flush(SpiceMarshaller *m) for (m2 = m; m2 != NULL; m2 = m2->next) { if (m2->pointer_ref.marshaller != NULL && m2->total_size > 0) { ptr_pos = lookup_ref(&m2->pointer_ref); - if (m2->pointer_ref.is_64bit) { - write_uint64(ptr_pos, - spice_marshaller_get_offset(m2)); - } else { - write_uint32(ptr_pos, - spice_marshaller_get_offset(m2)); - } + write_uint32(ptr_pos, spice_marshaller_get_offset(m2)); } } } diff --git a/common/marshaller.h b/common/marshaller.h index 041d16e..a631c85 100644 --- a/common/marshaller.h +++ b/common/marshaller.h @@ -53,7 +53,7 @@ size_t spice_marshaller_get_offset(SpiceMarshaller *m); size_t spice_marshaller_get_size(SpiceMarshaller *m); size_t spice_marshaller_get_total_size(SpiceMarshaller *m); SpiceMarshaller *spice_marshaller_get_submarshaller(SpiceMarshaller *m); -SpiceMarshaller *spice_marshaller_get_ptr_submarshaller(SpiceMarshaller *m, int is_64bit); +SpiceMarshaller *spice_marshaller_get_ptr_submarshaller(SpiceMarshaller *m); int spice_marshaller_fill_iovec(SpiceMarshaller *m, struct iovec *vec, int n_vec, size_t skip_bytes); void *spice_marshaller_add_uint64(SpiceMarshaller *m, uint64_t v); diff --git a/python_modules/marshal.py b/python_modules/marshal.py index 4e98993..74f3a54 100644 --- a/python_modules/marshal.py +++ b/python_modules/marshal.py @@ -234,7 +234,7 @@ def write_array_marshaller(writer, member, array, container_src, scope): def write_pointer_marshaller(writer, member, src): t = member.member_type ptr_func = write_marshal_ptr_function(writer, t.target_type) - submarshaller = "spice_marshaller_get_ptr_submarshaller(m, %d)" % (1 if member.get_fixed_nw_size() == 8 else 0) + submarshaller = "spice_marshaller_get_ptr_submarshaller(m)" if member.has_attr("marshall"): rest_args = "" if t.target_type.is_array(): diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py index 64c198e..bd5f542 100644 --- a/python_modules/ptypes.py +++ b/python_modules/ptypes.py @@ -4,8 +4,6 @@ import types _types_by_name = {} _types = [] -default_pointer_size = 4 - def type_exists(name): return name in _types_by_name @@ -512,7 +510,6 @@ class PointerType(Type): Type.__init__(self) self.name = None self.target_type = target_type - self.pointer_size = default_pointer_size def __str__(self): return "%s*" % (str(self.target_type)) @@ -521,9 +518,6 @@ class PointerType(Type): self.target_type = self.target_type.resolve() return self - def set_ptr_size(self, new_size): - self.pointer_size = new_size - def is_fixed_nw_size(self): return True @@ -531,19 +525,13 @@ class PointerType(Type): return True def primitive_type(self): - if self.pointer_size == 4: - return "uint32" - else: - return "uint64" + return "uint32" def get_fixed_nw_size(self): - return self.pointer_size + return 4 def c_type(self): - if self.pointer_size == 4: - return "uint32_t" - else: - return "uint64_t" + return "uint32_t" def contains_extra_size(self): return True diff --git a/spice_codegen.py b/spice_codegen.py index 66f99a5..e518686 100755 --- a/spice_codegen.py +++ b/spice_codegen.py @@ -171,8 +171,6 @@ parser.add_option("-i", "--include", help="Include FILE in generated code") parser.add_option("--prefix", dest="prefix", help="set public symbol prefix", default="") -parser.add_option("--ptrsize", dest="ptrsize", - help="set default pointer size", default="4") parser.add_option("--license", dest="license", help="license to use for generated file(s) (LGPL/BSD)", default="LGPL") parser.add_option("--generated-header", dest="generated_header", metavar="FILE", @@ -188,8 +186,6 @@ if len(args) == 0: if len(args) == 1: parser.error("No destination file specified") -ptypes.default_pointer_size = int(options.ptrsize) - proto_file = args[0] dest_file = args[1] proto = spice_parser.parse(proto_file) -- 2.20.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel