| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Remove the concept of word_size since it is meaningless in some
architectures. This is also done in preparation to possibly introduce
8-byte aligned messages.
Message-Id: <Y+lkv0uMo/3+hbCb@jupiter.tail36e24.ts.net>
|
|
|
|
| |
Message-Id: <Y3/Z1CGL8D4OwT66@viriathus>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On x86_64 alignment of structures is different, as the pointer size is different.
For simplicity we keep the same 4-byte alignment as used on
32-bit. This simplifies the support for 32-bit rpc on 64-bit kernels,
and also it seems not worth as an optimization, as we would need to
add more code in the ipc_kmsg* routines.
* routine.c: align both short and long descriptors
* utils.c: use a fixed alignment for data fields in structures
representing messages.
Signed-off-by: Luca Dariz <luca@orpolo.org>
Message-Id: <20220628094927.442907-2-luca@orpolo.org>
|
|
|
|
|
|
|
|
|
|
| |
This replaces the implementation from the University of Utah, covered by the
advertising clause, with the implementation from CMU, picked up from the GNU
Mach source, which is free from the advertising clause.
This includes the addition of the sizeof as seen used by mig with
git grep word_size
git grep sizeof_
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This has been tested by cross-compiling a base Hurd system to make sure
these kinds of routines are no longer used.
* lexxer.l: Remove tokens.
* parser.y: Remove token types and production rules.
* routine.c: Remove rtMakeProcedure, rtMakeSimpleProcedure,
rtMakeFunction.
* routine.h: Remove enum values rkSimpleProcedure, rkProcedure,
rkFunction. Remove dead fields from struct routine.
* user.c: Simplify and remove dead code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
* routine.c (rtFindSize): Always add sizeof_mach_msg_type_t to
SIZE for args not in long form, irregardless of the itSize.
|
|
|
|
|
|
|
| |
* type.c (itMakeNaturalType): New function.
(init_type): Use that instead of itMakeIntType for itWaitTimeType and
itMsgOptionType--give them each their special typedef names.
* routine.c (rtCheckArgTypes): Use itCheckNaturalType for rtMsgOption.
|
|
|