| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
* server.c: Include stdint.h in the header code.
* user.c: Likewise.
|
|
|
|
|
|
| |
* server.c: Use word_size and update comments.
* type.c: Use word_size to compute padding.
* user.c: Use word_size and update comments.
|
|
|
|
|
|
| |
* server.c: Add cast for ipc_port_t arguments that are handled differently.
* type.c: Set itKernelPort when the mach_port_t is treated as a ipc_port_t.
* type.h: Add itKernelPort to struct ipc_type.
|
|
|
|
|
| |
* header.c (WriteServerHeader): Replace "extern" with "static".
* server.c (WriteEpilog): Remove WriteSubsystemServerRoutine call.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For variable-length arrays, up to 2048 bytes are transmitted inline.
If the array is larger, the data is transmitted out-of-line, and a
pointer to a vm_allocated region is stored at the beginning of the
array.
Previously, the generated code casted the field. Use a union instead.
This fixes the gcc warning `dereferencing type-punned pointer will
break strict-aliasing rules [-Wstrict-aliasing]'.
* global.c (OOLPostfix): New variable.
* global.h (OOLPostfix): New declaration.
* server.c (WriteServerCallArg): Avoid cast.
(WriteDestroyArg): Likewise.
(WritePackArgValue): Likewise.
(WritePackArg): Likewise.
* user.c (WriteExtractArgValue): Likewise.
* utils.c (WriteFieldDeclPrim): Generate a union with an additional
pointer field for variable-length arrays.
|
|
|
|
|
|
|
|
|
| |
Annotate generated type checks with static branch prediction
optimizing well-formed messages.
* utils.c (WriteBogusDefines): Define `mig_unlikely' if not defined.
* server.c: Use `mig_unlikely' in generated type checks.
* user.c: Likewise.
|
|
|
|
|
|
|
|
| |
By providing default implementations, servers can provide partial
implementations of protocols without having to stub out functions.
* server.c (WriteDefaultRoutine): New function.
(WriteRoutine): Call WriteDefaultRoutine.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add support for protected payloads. The new `intranpayload' option can
be used to specify a translation function translating payloads to
values of the translated type. This function will be used instead of
the `intran' function to to look up the receiving object of a message
in a server.
This makes it easy to use the protected payloads introduced in GNU
Mach 1.5.
An inTransPayload function translates payloads to objects, like an
inTrans function translates from port names to objects. Generate code
in the server routine to optimize lookups to the receiver of the
message.
Additionally, if no intran function is provided, but an intranpayload
function is, it is expected to translate from payloads to port names.
This is used to preserve the semantics in case the server routine
expects a port name.
* NEWS: Add item.
* lexxer.l: Emit syInTranPayload.
* parser.h: Define syInTranPayload.
* parser.y (TransTypeSpec): Handle syInTranPayload.
* type.h (struct ipc_type): Add itInTransPayload.
* server.c (WriteExtractArgValue): If a payload-aware intrans function
has been specified, use it to get a reference to the receiving object.
* routine.c (rtAugmentArgKind): Force the use of a local variable if a
payload-aware translate-in function is defined.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the terminating zero of variable-sized c strings was only
included when copying the message if the length of the string was not
a multiple of four. mig_strncpy returns the length of the string
excluding the terminating zero. Fix this by properly accounting for
the byte for the terminating zero in the array length.
* server.c (WritePackArgValue): Account for the terminating zero in
the array length.
* user.c (WritePackArgValue): Likewise.
|
|
|
|
|
|
|
| |
* header.c (WriteServerHeader): Emit a x_server_routine that can be
inlined.
* server.c (WriteEpilog): Export the x_routines array so it can be
used from the inlined x_server_routine.
|
|
|
|
|
|
| |
* server.c (WriteSubsystemServerRoutine): New function.
(WriteEpilog): Adjust accordingly.
* write.h (WriteSubsystemServerRoutine): New declaration.
|
|
|
|
|
|
|
| |
This is again that code where variable is assigned to itself, but
I don't know how to fix this the other way.
* server.c (WriteVarDecls) (msgh_simple): Assign to itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Drop the register keyword both from MIGs code and from the generated
code. The register keyword is only a hint and it is ignored by modern
compilers.
* alloca.c: Drop the register keyword.
* header.c: Likewise.
* lexxer.l: Likewise.
* parser.y: Likewise.
* routine.c: Likewise.
* server.c: Likewise.
* statement.c: Likewise.
* string.c: Likewise.
* type.c: Likewise.
* user.c: Likewise.
* utils.c: Likewise.
* vprint.c: Likewise.
|
|
|
|
|
| |
* server.c (WriteDestroyArg): Only dealloc out-of-line memory from
request message if KERN_SUCCESS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix compiler, flex and bison warnings.
* error.c: Include <stdlib.h>.
* lexxer.h (yylex): Add declaration.
* migcom.c: Include <stdlib.h>.
(main): Set USER, SHEADER and IHEADER to `NULL' by default.
(myfclose): Add lost conversion specifications.
* parser.h (yyerror): Add declaration.
* routine.c (rtPrintArg, rtCheckRoutine): Add braces to avoid
ambiguousness.
* server.c (WriteSymTabEntries): Make NUM an `u_int'.
* user.c (WriteUserIndividual): Add a `default' case in a switch
statement and add lost conversion specifications.
* lexxer.l: Set option `nounput'.
* parser.y (%left): Change commas to spaces.
|
|
|
|
|
|
|
|
| |
* user.c (WriteTypeCheck): Use BAD_TYPECHECK macro instead of type-pun.
* server.c (WriteTypeCheck): Likewise.
* utils.c (WriteBogusDefines): Write a #define for that macro.
* utils.c (WriteCheckDecl): Write auto const, not static const.
(WriteStaticShortDecl, WriteStaticLongDecl): Likewise.
|
|
|
|
|
| |
* user.c (WriteIncludes): Fix missing newline in last change.
* server.c (WriteIncludes): Likewise.
|
|
|
|
|
|
|
|
|
|
| |
* server.c (WriteIncludes): Write:
#ifndef _GNU_SOURCE
#define _GNU_SOURCE 1
#endif
into the output before all else. This is required for building
stubs with GNU libc's built-in Mach/MiG support code.
* user.c (WriteIncludes): Likewise.
|
|
|