On 06/08/2010 11:32 PM, Alex Williamson wrote:
On Tue, 2010-06-08 at 15:11 -0600, Alex Williamson wrote:
Allows us to compress the protocol a bit.
...
@@ -284,6 +290,33 @@ int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque)
return (stage == 2)&& (expected_time<= migrate_max_downtime());
}
+static inline void *host_from_stream_offset(QEMUFile *f,
+ ram_addr_t offset,
+ int flags)
This probably shouldn't be inline. When sending, we'll continue from
COMPRESS or PAGE. We'd get out of sync on the recv if the compiler
created separate static blocks. Compiler folks correct me if this can't
happen.
There is only one static variable even if the inlining happens in
multiple places. In fact, inlining is totally transparent.
Example:
$ cat > x.c <<\EOF
#ifndef force_inline
#define force_inline inline __attribute__((always_inline))
#endif
static force_inline int f()
{
static int i;
return i++;
}
int main()
{
printf ("%d\n", f());
printf ("%d\n", f());
printf ("%d\n", f());
printf ("%d\n", f());
}
EOF
$ gcc -o - -Dforce_inline= -S x.c | egrep -cw _?f
7
$ gcc -o - -S x.c | egrep -cw _?f
0
$ gcc x.c && ./a.out
0
1
2
3
Paolo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html