xref: /openbmc/hiomapd/test/bmc_event_ack_v2.c (revision 1770ce89ca10664a67de4e973973f1e267b68494)
1*1770ce89SAndrew Jeffery /*
2*1770ce89SAndrew Jeffery  * MBox Daemon Test File
3*1770ce89SAndrew Jeffery  *
4*1770ce89SAndrew Jeffery  * Copyright 2017 IBM
5*1770ce89SAndrew Jeffery  *
6*1770ce89SAndrew Jeffery  * Licensed under the Apache License, Version 2.0 (the "License");
7*1770ce89SAndrew Jeffery  * you may not use this file except in compliance with the License.
8*1770ce89SAndrew Jeffery  * You may obtain a copy of the License at
9*1770ce89SAndrew Jeffery  *
10*1770ce89SAndrew Jeffery  * http://www.apache.org/licenses/LICENSE-2.0
11*1770ce89SAndrew Jeffery  *
12*1770ce89SAndrew Jeffery  * Unless required by applicable law or agreed to in writing, software
13*1770ce89SAndrew Jeffery  * distributed under the License is distributed on an "AS IS" BASIS,
14*1770ce89SAndrew Jeffery  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*1770ce89SAndrew Jeffery  * See the License for the specific language governing permissions and
16*1770ce89SAndrew Jeffery  * limitations under the License.
17*1770ce89SAndrew Jeffery  *
18*1770ce89SAndrew Jeffery  */
19*1770ce89SAndrew Jeffery 
20*1770ce89SAndrew Jeffery #include <assert.h>
21*1770ce89SAndrew Jeffery #include <sys/mman.h>
22*1770ce89SAndrew Jeffery #include <sys/types.h>
23*1770ce89SAndrew Jeffery #include <sys/stat.h>
24*1770ce89SAndrew Jeffery #include <unistd.h>
25*1770ce89SAndrew Jeffery 
26*1770ce89SAndrew Jeffery #include "mbox.h"
27*1770ce89SAndrew Jeffery #include "mboxd_msg.h"
28*1770ce89SAndrew Jeffery 
29*1770ce89SAndrew Jeffery #include "test/mbox.h"
30*1770ce89SAndrew Jeffery #include "test/system.h"
31*1770ce89SAndrew Jeffery 
32*1770ce89SAndrew Jeffery #define FLAGS 0xc3
33*1770ce89SAndrew Jeffery 
34*1770ce89SAndrew Jeffery static const uint8_t command[] = {
35*1770ce89SAndrew Jeffery 	0x09, 0xaa, FLAGS, 0x00, 0x00, 0x00, 0x00, 0x00,
36*1770ce89SAndrew Jeffery 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, FLAGS
37*1770ce89SAndrew Jeffery };
38*1770ce89SAndrew Jeffery 
39*1770ce89SAndrew Jeffery #define MEM_SIZE	3
40*1770ce89SAndrew Jeffery #define ERASE_SIZE	1
41*1770ce89SAndrew Jeffery #define N_WINDOWS	1
42*1770ce89SAndrew Jeffery #define WINDOW_SIZE	1
43*1770ce89SAndrew Jeffery 
44*1770ce89SAndrew Jeffery int main(void)
45*1770ce89SAndrew Jeffery {
46*1770ce89SAndrew Jeffery 	struct mbox_context *ctx;
47*1770ce89SAndrew Jeffery 	struct stat details;
48*1770ce89SAndrew Jeffery 	uint8_t *map;
49*1770ce89SAndrew Jeffery 	int rc;
50*1770ce89SAndrew Jeffery 
51*1770ce89SAndrew Jeffery 	system_set_reserved_size(MEM_SIZE);
52*1770ce89SAndrew Jeffery 	system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE);
53*1770ce89SAndrew Jeffery 
54*1770ce89SAndrew Jeffery 	ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE);
55*1770ce89SAndrew Jeffery 
56*1770ce89SAndrew Jeffery 	set_bmc_events(ctx, FLAGS, SET_BMC_EVENT);
57*1770ce89SAndrew Jeffery 
58*1770ce89SAndrew Jeffery 	rc = mbox_command_dispatch(ctx, command, sizeof(command));
59*1770ce89SAndrew Jeffery 	assert(rc == 1);
60*1770ce89SAndrew Jeffery 
61*1770ce89SAndrew Jeffery 	rc = fstat(ctx->fds[MBOX_FD].fd, &details);
62*1770ce89SAndrew Jeffery 	assert(rc == 0);
63*1770ce89SAndrew Jeffery 
64*1770ce89SAndrew Jeffery 	assert(details.st_size == 16);
65*1770ce89SAndrew Jeffery 
66*1770ce89SAndrew Jeffery 	map = mmap(NULL, details.st_size, PROT_READ, MAP_PRIVATE,
67*1770ce89SAndrew Jeffery 			ctx->fds[MBOX_FD].fd, 0);
68*1770ce89SAndrew Jeffery 	assert(map != MAP_FAILED);
69*1770ce89SAndrew Jeffery 
70*1770ce89SAndrew Jeffery 	if (map[15] != 0xc0)
71*1770ce89SAndrew Jeffery 		return -1;
72*1770ce89SAndrew Jeffery 
73*1770ce89SAndrew Jeffery 	return rc;
74*1770ce89SAndrew Jeffery }
75