~darkmuggle-deactivatedaccount/ubuntu/quantal/grub2/fix-872244

« back to all changes in this revision

Viewing changes to debian/grub-extras/lua/lobject.h

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson, Colin Watson, Evan Broder, Mario Limonciello
  • Date: 2010-11-24 13:59:55 UTC
  • mfrom: (1.17.6 upstream) (17.6.15 experimental)
  • Revision ID: james.westby@ubuntu.com-20101124135955-r6ii5sepayr7jt53
Tags: 1.99~20101124-1ubuntu1
[ Colin Watson ]
* Resynchronise with Debian experimental.  Remaining changes:
  - Adjust for default Ubuntu boot options ("quiet splash").
  - Default to hiding the menu; holding down Shift at boot will show it.
  - Set a monochromatic theme for Ubuntu.
  - Apply Ubuntu GRUB Legacy changes to legacy update-grub script: title,
    recovery mode, quiet option, tweak how memtest86+ is displayed, and
    use UUIDs where appropriate.
  - Fix backslash-escaping in merge_debconf_into_conf.
  - Remove "GNU/Linux" from default distributor string.
  - Add crashkernel= options if kdump and makedumpfile are available.
  - If other operating systems are installed, then automatically unhide
    the menu.  Otherwise, if GRUB_HIDDEN_TIMEOUT is 0, then use keystatus
    if available to check whether Shift is pressed.  If it is, show the
    menu, otherwise boot immediately.  If keystatus is not available, then
    fall back to a short delay interruptible with Escape.
  - Allow Shift to interrupt 'sleep --interruptible'.
  - Don't display introductory message about line editing unless we're
    actually offering a shell prompt.  Don't clear the screen just before
    booting if we never drew the menu in the first place.
  - Remove some verbose messages printed before reading the configuration
    file.
  - Suppress progress messages as the kernel and initrd load for
    non-recovery kernel menu entries.
  - Change prepare_grub_to_access_device to handle filesystems
    loop-mounted on file images.
  - Ignore devices loop-mounted from files in 10_linux.
  - Show the boot menu if the previous boot failed, that is if it failed
    to get to the end of one of the normal runlevels.
  - Don't generate /boot/grub/device.map during grub-install or
    grub-mkconfig by default.
  - Adjust upgrade version checks for Ubuntu.
  - Don't display "GRUB loading" unless Shift is held down.
  - Adjust versions of grub-doc and grub-legacy-doc conflicts to tolerate
    our backport of the grub-doc split.
  - Fix LVM/RAID probing in the absence of /boot/grub/device.map.
  - Look for .mo files in /usr/share/locale-langpack as well, in
    preference.
  - Make sure GRUB_TIMEOUT isn't quoted unnecessarily.
  - Probe all devices in 'grub-probe --target=drive' if
    /boot/grub/device.map is missing.
  - Build-depend on qemu-kvm rather than qemu-system for grub-pc tests.
  - Use qemu rather than qemu-system-i386.
  - Program vesafb on BIOS systems rather than efifb.
  - Add a grub-rescue-efi-amd64 package containing a rescue CD-ROM image
    for EFI-AMD64.
  - On Wubi, don't ask for an install device, but just update wubildr
    using the diverted grub-install.
  - When embedding the core image in a post-MBR gap, check for and avoid
    sectors matching any of a list of known signatures.
  - Disable video_bochs and video_cirrus on PC BIOS systems, as probing
    PCI space seems to break on some systems.
* Downgrade "ACPI shutdown failed" error to a debug message, since it can
  cause spurious test failures.

[ Evan Broder ]
* Enable lua from grub-extras.
* Incorporate the bitop library into lua.
* Add enum_pci function to grub module in lua.
* Switch back to gfxpayload=keep by default, unless the video hardware
  is known to not support it.

[ Mario Limonciello ]
* Built part_msdos and vfat into bootx64.efi (LP: #677758)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
** $Id: lobject.h,v 2.20.1.2 2008/08/06 13:29:48 roberto Exp $
 
3
** Type definitions for Lua objects
 
4
** See Copyright Notice in lua.h
 
5
*/
 
6
 
 
7
 
 
8
#ifndef lobject_h
 
9
#define lobject_h
 
10
 
 
11
 
 
12
#include <stdarg.h>
 
13
 
 
14
 
 
15
#include "llimits.h"
 
16
#include "lua.h"
 
17
 
 
18
 
 
19
/* tags for values visible from Lua */
 
20
#define LAST_TAG        LUA_TTHREAD
 
21
 
 
22
#define NUM_TAGS        (LAST_TAG+1)
 
23
 
 
24
 
 
25
/*
 
26
** Extra tags for non-values
 
27
*/
 
28
#define LUA_TPROTO      (LAST_TAG+1)
 
29
#define LUA_TUPVAL      (LAST_TAG+2)
 
30
#define LUA_TDEADKEY    (LAST_TAG+3)
 
31
 
 
32
 
 
33
/*
 
34
** Union of all collectable objects
 
35
*/
 
36
typedef union GCObject GCObject;
 
37
 
 
38
 
 
39
/*
 
40
** Common Header for all collectable objects (in macro form, to be
 
41
** included in other objects)
 
42
*/
 
43
#define CommonHeader    GCObject *next; lu_byte tt; lu_byte marked
 
44
 
 
45
 
 
46
/*
 
47
** Common header in struct form
 
48
*/
 
49
typedef struct GCheader {
 
50
  CommonHeader;
 
51
} GCheader;
 
52
 
 
53
 
 
54
 
 
55
 
 
56
/*
 
57
** Union of all Lua values
 
58
*/
 
59
typedef union {
 
60
  GCObject *gc;
 
61
  void *p;
 
62
  lua_Number n;
 
63
  int b;
 
64
} Value;
 
65
 
 
66
 
 
67
/*
 
68
** Tagged Values
 
69
*/
 
70
 
 
71
#define TValuefields    Value value; int tt
 
72
 
 
73
typedef struct lua_TValue {
 
74
  TValuefields;
 
75
} TValue;
 
76
 
 
77
 
 
78
/* Macros to test type */
 
79
#define ttisnil(o)      (ttype(o) == LUA_TNIL)
 
80
#define ttisnumber(o)   (ttype(o) == LUA_TNUMBER)
 
81
#define ttisstring(o)   (ttype(o) == LUA_TSTRING)
 
82
#define ttistable(o)    (ttype(o) == LUA_TTABLE)
 
83
#define ttisfunction(o) (ttype(o) == LUA_TFUNCTION)
 
84
#define ttisboolean(o)  (ttype(o) == LUA_TBOOLEAN)
 
85
#define ttisuserdata(o) (ttype(o) == LUA_TUSERDATA)
 
86
#define ttisthread(o)   (ttype(o) == LUA_TTHREAD)
 
87
#define ttislightuserdata(o)    (ttype(o) == LUA_TLIGHTUSERDATA)
 
88
 
 
89
/* Macros to access values */
 
90
#define ttype(o)        ((o)->tt)
 
91
#define gcvalue(o)      check_exp(iscollectable(o), (o)->value.gc)
 
92
#define pvalue(o)       check_exp(ttislightuserdata(o), (o)->value.p)
 
93
#define nvalue(o)       check_exp(ttisnumber(o), (o)->value.n)
 
94
#define rawtsvalue(o)   check_exp(ttisstring(o), &(o)->value.gc->ts)
 
95
#define tsvalue(o)      (&rawtsvalue(o)->tsv)
 
96
#define rawuvalue(o)    check_exp(ttisuserdata(o), &(o)->value.gc->u)
 
97
#define uvalue(o)       (&rawuvalue(o)->uv)
 
98
#define clvalue(o)      check_exp(ttisfunction(o), &(o)->value.gc->cl)
 
99
#define hvalue(o)       check_exp(ttistable(o), &(o)->value.gc->h)
 
100
#define bvalue(o)       check_exp(ttisboolean(o), (o)->value.b)
 
101
#define thvalue(o)      check_exp(ttisthread(o), &(o)->value.gc->th)
 
102
 
 
103
#define l_isfalse(o)    (ttisnil(o) || (ttisboolean(o) && bvalue(o) == 0))
 
104
 
 
105
/*
 
106
** for internal debug only
 
107
*/
 
108
#define checkconsistency(obj) \
 
109
  lua_assert(!iscollectable(obj) || (ttype(obj) == (obj)->value.gc->gch.tt))
 
110
 
 
111
#define checkliveness(g,obj) \
 
112
  lua_assert(!iscollectable(obj) || \
 
113
  ((ttype(obj) == (obj)->value.gc->gch.tt) && !isdead(g, (obj)->value.gc)))
 
114
 
 
115
 
 
116
/* Macros to set values */
 
117
#define setnilvalue(obj) ((obj)->tt=LUA_TNIL)
 
118
 
 
119
#define setnvalue(obj,x) \
 
120
  { TValue *i_o=(obj); i_o->value.n=(x); i_o->tt=LUA_TNUMBER; }
 
121
 
 
122
#define setpvalue(obj,x) \
 
123
  { TValue *i_o=(obj); i_o->value.p=(x); i_o->tt=LUA_TLIGHTUSERDATA; }
 
124
 
 
125
#define setbvalue(obj,x) \
 
126
  { TValue *i_o=(obj); i_o->value.b=(x); i_o->tt=LUA_TBOOLEAN; }
 
127
 
 
128
#define setsvalue(L,obj,x) \
 
129
  { TValue *i_o=(obj); \
 
130
    i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TSTRING; \
 
131
    checkliveness(G(L),i_o); }
 
132
 
 
133
#define setuvalue(L,obj,x) \
 
134
  { TValue *i_o=(obj); \
 
135
    i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TUSERDATA; \
 
136
    checkliveness(G(L),i_o); }
 
137
 
 
138
#define setthvalue(L,obj,x) \
 
139
  { TValue *i_o=(obj); \
 
140
    i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTHREAD; \
 
141
    checkliveness(G(L),i_o); }
 
142
 
 
143
#define setclvalue(L,obj,x) \
 
144
  { TValue *i_o=(obj); \
 
145
    i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TFUNCTION; \
 
146
    checkliveness(G(L),i_o); }
 
147
 
 
148
#define sethvalue(L,obj,x) \
 
149
  { TValue *i_o=(obj); \
 
150
    i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TTABLE; \
 
151
    checkliveness(G(L),i_o); }
 
152
 
 
153
#define setptvalue(L,obj,x) \
 
154
  { TValue *i_o=(obj); \
 
155
    i_o->value.gc=cast(GCObject *, (x)); i_o->tt=LUA_TPROTO; \
 
156
    checkliveness(G(L),i_o); }
 
157
 
 
158
 
 
159
 
 
160
 
 
161
#define setobj(L,obj1,obj2) \
 
162
  { const TValue *o2=(obj2); TValue *o1=(obj1); \
 
163
    o1->value = o2->value; o1->tt=o2->tt; \
 
164
    checkliveness(G(L),o1); }
 
165
 
 
166
 
 
167
/*
 
168
** different types of sets, according to destination
 
169
*/
 
170
 
 
171
/* from stack to (same) stack */
 
172
#define setobjs2s       setobj
 
173
/* to stack (not from same stack) */
 
174
#define setobj2s        setobj
 
175
#define setsvalue2s     setsvalue
 
176
#define sethvalue2s     sethvalue
 
177
#define setptvalue2s    setptvalue
 
178
/* from table to same table */
 
179
#define setobjt2t       setobj
 
180
/* to table */
 
181
#define setobj2t        setobj
 
182
/* to new object */
 
183
#define setobj2n        setobj
 
184
#define setsvalue2n     setsvalue
 
185
 
 
186
#define setttype(obj, tt) (ttype(obj) = (tt))
 
187
 
 
188
 
 
189
#define iscollectable(o)        (ttype(o) >= LUA_TSTRING)
 
190
 
 
191
 
 
192
 
 
193
typedef TValue *StkId;  /* index to stack elements */
 
194
 
 
195
 
 
196
/*
 
197
** String headers for string table
 
198
*/
 
199
typedef union TString {
 
200
  L_Umaxalign dummy;  /* ensures maximum alignment for strings */
 
201
  struct {
 
202
    CommonHeader;
 
203
    lu_byte reserved;
 
204
    unsigned int hash;
 
205
    size_t len;
 
206
  } tsv;
 
207
} TString;
 
208
 
 
209
 
 
210
#define getstr(ts)      cast(const char *, (ts) + 1)
 
211
#define svalue(o)       getstr(rawtsvalue(o))
 
212
 
 
213
 
 
214
 
 
215
typedef union Udata {
 
216
  L_Umaxalign dummy;  /* ensures maximum alignment for `local' udata */
 
217
  struct {
 
218
    CommonHeader;
 
219
    struct Table *metatable;
 
220
    struct Table *env;
 
221
    size_t len;
 
222
  } uv;
 
223
} Udata;
 
224
 
 
225
 
 
226
 
 
227
 
 
228
/*
 
229
** Function Prototypes
 
230
*/
 
231
typedef struct Proto {
 
232
  CommonHeader;
 
233
  TValue *k;  /* constants used by the function */
 
234
  Instruction *code;
 
235
  struct Proto **p;  /* functions defined inside the function */
 
236
  int *lineinfo;  /* map from opcodes to source lines */
 
237
  struct LocVar *locvars;  /* information about local variables */
 
238
  TString **upvalues;  /* upvalue names */
 
239
  TString  *source;
 
240
  int sizeupvalues;
 
241
  int sizek;  /* size of `k' */
 
242
  int sizecode;
 
243
  int sizelineinfo;
 
244
  int sizep;  /* size of `p' */
 
245
  int sizelocvars;
 
246
  int linedefined;
 
247
  int lastlinedefined;
 
248
  GCObject *gclist;
 
249
  lu_byte nups;  /* number of upvalues */
 
250
  lu_byte numparams;
 
251
  lu_byte is_vararg;
 
252
  lu_byte maxstacksize;
 
253
} Proto;
 
254
 
 
255
 
 
256
/* masks for new-style vararg */
 
257
#define VARARG_HASARG           1
 
258
#define VARARG_ISVARARG         2
 
259
#define VARARG_NEEDSARG         4
 
260
 
 
261
 
 
262
typedef struct LocVar {
 
263
  TString *varname;
 
264
  int startpc;  /* first point where variable is active */
 
265
  int endpc;    /* first point where variable is dead */
 
266
} LocVar;
 
267
 
 
268
 
 
269
 
 
270
/*
 
271
** Upvalues
 
272
*/
 
273
 
 
274
typedef struct UpVal {
 
275
  CommonHeader;
 
276
  TValue *v;  /* points to stack or to its own value */
 
277
  union {
 
278
    TValue value;  /* the value (when closed) */
 
279
    struct {  /* double linked list (when open) */
 
280
      struct UpVal *prev;
 
281
      struct UpVal *next;
 
282
    } l;
 
283
  } u;
 
284
} UpVal;
 
285
 
 
286
 
 
287
/*
 
288
** Closures
 
289
*/
 
290
 
 
291
#define ClosureHeader \
 
292
        CommonHeader; lu_byte isC; lu_byte nupvalues; GCObject *gclist; \
 
293
        struct Table *env
 
294
 
 
295
typedef struct CClosure {
 
296
  ClosureHeader;
 
297
  lua_CFunction f;
 
298
  TValue upvalue[1];
 
299
} CClosure;
 
300
 
 
301
 
 
302
typedef struct LClosure {
 
303
  ClosureHeader;
 
304
  struct Proto *p;
 
305
  UpVal *upvals[1];
 
306
} LClosure;
 
307
 
 
308
 
 
309
typedef union Closure {
 
310
  CClosure c;
 
311
  LClosure l;
 
312
} Closure;
 
313
 
 
314
 
 
315
#define iscfunction(o)  (ttype(o) == LUA_TFUNCTION && clvalue(o)->c.isC)
 
316
#define isLfunction(o)  (ttype(o) == LUA_TFUNCTION && !clvalue(o)->c.isC)
 
317
 
 
318
 
 
319
/*
 
320
** Tables
 
321
*/
 
322
 
 
323
typedef union TKey {
 
324
  struct {
 
325
    TValuefields;
 
326
    struct Node *next;  /* for chaining */
 
327
  } nk;
 
328
  TValue tvk;
 
329
} TKey;
 
330
 
 
331
 
 
332
typedef struct Node {
 
333
  TValue i_val;
 
334
  TKey i_key;
 
335
} Node;
 
336
 
 
337
 
 
338
typedef struct Table {
 
339
  CommonHeader;
 
340
  lu_byte flags;  /* 1<<p means tagmethod(p) is not present */
 
341
  lu_byte lsizenode;  /* log2 of size of `node' array */
 
342
  struct Table *metatable;
 
343
  TValue *array;  /* array part */
 
344
  Node *node;
 
345
  Node *lastfree;  /* any free position is before this position */
 
346
  GCObject *gclist;
 
347
  int sizearray;  /* size of `array' array */
 
348
} Table;
 
349
 
 
350
 
 
351
 
 
352
/*
 
353
** `module' operation for hashing (size is always a power of 2)
 
354
*/
 
355
#define lmod(s,size) \
 
356
        (check_exp((size&(size-1))==0, (cast(int, (s) & ((size)-1)))))
 
357
 
 
358
 
 
359
#define twoto(x)        (1<<(x))
 
360
#define sizenode(t)     (twoto((t)->lsizenode))
 
361
 
 
362
 
 
363
#define luaO_nilobject          (&luaO_nilobject_)
 
364
 
 
365
LUAI_DATA const TValue luaO_nilobject_;
 
366
 
 
367
#define ceillog2(x)     (luaO_log2((x)-1) + 1)
 
368
 
 
369
LUAI_FUNC int luaO_log2 (unsigned int x);
 
370
LUAI_FUNC int luaO_int2fb (unsigned int x);
 
371
LUAI_FUNC int luaO_fb2int (int x);
 
372
LUAI_FUNC int luaO_rawequalObj (const TValue *t1, const TValue *t2);
 
373
LUAI_FUNC int luaO_str2d (const char *s, lua_Number *result);
 
374
LUAI_FUNC const char *luaO_pushvfstring (lua_State *L, const char *fmt,
 
375
                                                       va_list argp);
 
376
LUAI_FUNC const char *luaO_pushfstring (lua_State *L, const char *fmt, ...);
 
377
LUAI_FUNC void luaO_chunkid (char *out, const char *source, size_t len);
 
378
 
 
379
 
 
380
#endif