Skip to content

Commit 9f71df7

Browse files
committed
Use a rootdir path to ensure to wait for the desired partition
1 parent 5cb490e commit 9f71df7

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

include/grisp/init.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ typedef void (*grisp_check_and_create_wlandev)(void);
6060

6161
void grisp_init_buses(void);
6262
void grisp_init_libbsd(void);
63-
void grisp_init_sd_card(void);
63+
void grisp_init_sd_card(const char *rootdir);
6464
void grisp_init_lower_self_prio(void);
6565
rtems_status_code grisp_init_wait_for_sd(void);
6666
void grisp_saf1761_basic_init(void);

src/init.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,10 @@ static rtems_id wait_mounted_task_id = RTEMS_INVALID_ID;
8888

8989
static rtems_status_code
9090
media_listener(rtems_media_event event, rtems_media_state state,
91-
const char *src, const char *dest, void *arg)
91+
const char *src, const char *dest, const char *arg)
9292
{
93+
char fdt_target[192] = "";
94+
9395
printf(
9496
"media listener: event = %s, state = %s, src = %s",
9597
rtems_media_event_description(event),
@@ -102,13 +104,20 @@ media_listener(rtems_media_event event, rtems_media_state state,
102104
}
103105

104106
if (arg != NULL) {
105-
printf(", arg = %p\n", arg);
107+
strlcpy(fdt_target, arg, 192);
108+
size_t length = strlen(arg);
109+
if (fdt_target[length - 1] == '/') {
110+
fdt_target[length - 1] = '\0';
111+
}
112+
printf(", fdt_target = %s\n", fdt_target);
106113
}
107114

108115
printf("\n");
109116

110117
if (event == RTEMS_MEDIA_EVENT_MOUNT &&
111-
state == RTEMS_MEDIA_STATE_SUCCESS) {
118+
state == RTEMS_MEDIA_STATE_SUCCESS &&
119+
dest != NULL && arg != NULL &&
120+
strcmp(dest, fdt_target) == 0) {
112121
rtems_event_send(wait_mounted_task_id, EVT_MOUNTED);
113122
}
114123

@@ -168,7 +177,7 @@ grisp_init_lower_self_prio(void)
168177
}
169178

170179
void
171-
grisp_init_sd_card(void)
180+
grisp_init_sd_card(const char *rootdir)
172181
{
173182
rtems_status_code sc;
174183

@@ -180,7 +189,7 @@ grisp_init_sd_card(void)
180189
sc = rtems_media_initialize();
181190
assert(sc == RTEMS_SUCCESSFUL);
182191

183-
sc = rtems_media_listener_add(media_listener, NULL);
192+
sc = rtems_media_listener_add(media_listener, rootdir);
184193
assert(sc == RTEMS_SUCCESSFUL);
185194

186195
sc = rtems_media_server_initialize(

0 commit comments

Comments
 (0)