RTEMS CPU Kit with SuperCore  4.11.3
media.h
Go to the documentation of this file.
1 
9 /*
10  * Copyright (c) 2009, 2010 embedded brains GmbH. All rights reserved.
11  *
12  * embedded brains GmbH
13  * Obere Lagerstr. 30
14  * 82178 Puchheim
15  * Germany
16  * <rtems@embedded-brains.de>
17  *
18  * The license and distribution terms for this file may be
19  * found in the file LICENSE in this distribution or at
20  * http://www.rtems.org/license/LICENSE.
21  */
22 
23 #ifndef RTEMS_MEDIA_H
24 #define RTEMS_MEDIA_H
25 
26 #include <rtems.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif /* __cplusplus */
31 
46 #define RTEMS_MEDIA_MOUNT_BASE "/media"
47 
48 #define RTEMS_MEDIA_DELIMITER '-'
49 
66 typedef enum {
67  RTEMS_MEDIA_EVENT_DISK_ATTACH,
68  RTEMS_MEDIA_EVENT_DISK_DETACH,
69  RTEMS_MEDIA_EVENT_MOUNT,
70  RTEMS_MEDIA_EVENT_UNMOUNT,
71  RTEMS_MEDIA_EVENT_PARTITION_INQUIRY,
72  RTEMS_MEDIA_EVENT_PARTITION_ATTACH,
73  RTEMS_MEDIA_EVENT_PARTITION_DETACH,
74  RTEMS_MEDIA_EVENT_ERROR
76 
88 typedef enum {
89  RTEMS_MEDIA_STATE_INQUIRY,
90  RTEMS_MEDIA_STATE_READY,
91  RTEMS_MEDIA_STATE_ABORTED,
92  RTEMS_MEDIA_STATE_SUCCESS,
93  RTEMS_MEDIA_STATE_FAILED,
94  RTEMS_MEDIA_ERROR_DISK_UNKNOWN,
95  RTEMS_MEDIA_ERROR_DISK_EXISTS,
96  RTEMS_MEDIA_ERROR_DISK_OR_PARTITION_UNKNOWN,
97  RTEMS_MEDIA_ERROR_DISK_OR_PARTITION_EXISTS,
98  RTEMS_MEDIA_ERROR_PARTITION_UNKNOWN,
99  RTEMS_MEDIA_ERROR_PARTITION_ORPHAN,
100  RTEMS_MEDIA_ERROR_PARTITION_DETACH_WITH_MOUNT,
101  RTEMS_MEDIA_ERROR_PARTITION_WITH_UNKNOWN_DISK,
102  RTEMS_MEDIA_ERROR_MOUNT_POINT_UNKNOWN,
103  RTEMS_MEDIA_ERROR_MOUNT_POINT_EXISTS,
104  RTEMS_MEDIA_ERROR_MOUNT_POINT_ORPHAN
106 
283  rtems_media_event event,
284  rtems_media_state state,
285  const char *src,
286  const char *dest,
287  void *listener_arg
288 );
289 
307  rtems_media_state state,
308  const char *src,
309  char **dest,
310  void *worker_arg
311 );
312 
328 
337  rtems_media_listener listener,
338  void *listener_arg
339 );
340 
348  rtems_media_listener listener,
349  void *listener_arg
350 );
351 
368  rtems_media_event event,
369  const char *src,
370  char **dest,
371  rtems_media_worker worker,
372  void *worker_arg
373 );
374 
395  rtems_task_priority priority,
396  size_t stack_size,
397  rtems_mode modes,
398  rtems_attribute attributes
399 );
400 
411  rtems_media_event event,
412  const char *src,
413  rtems_media_worker worker,
414  void *worker_arg
415 );
416 
420 static inline rtems_status_code rtems_media_server_disk_attach(
421  const char *driver_name,
422  rtems_media_worker worker,
423  void *worker_arg
424 )
425 {
427  RTEMS_MEDIA_EVENT_DISK_ATTACH,
428  driver_name,
429  worker,
430  worker_arg
431  );
432 }
433 
437 static inline rtems_status_code rtems_media_server_disk_detach(
438  const char *disk_path
439 )
440 {
442  RTEMS_MEDIA_EVENT_DISK_DETACH,
443  disk_path,
444  NULL,
445  NULL
446  );
447 }
448 
462  const char *prefix,
463  const char *name,
464  rtems_device_major_number major
465 );
466 
474 char *rtems_media_replace_prefix(const char *new_prefix, const char *path);
475 
482  const char *path,
483  rtems_device_minor_number minor
484 );
485 
501  const char *device_path,
502  dev_t *device_identifier
503 );
504 
505 const char *rtems_media_event_description(rtems_media_event event);
506 
507 const char *rtems_media_state_description(rtems_media_state state);
508 
513 #ifdef __cplusplus
514 }
515 #endif /* __cplusplus */
516 
517 #endif /* RTEMS_MEDIA_H */
uint32_t rtems_attribute
This defines the type used to contain Classic API attributes.
Definition: attr.h:44
rtems_status_code(* rtems_media_listener)(rtems_media_event event, rtems_media_state state, const char *src, const char *dest, void *listener_arg)
Event listener.
Definition: media.h:282
rtems_status_code rtems_media_server_initialize(rtems_task_priority priority, size_t stack_size, rtems_mode modes, rtems_attribute attributes)
Initializes the media manager and media server.
Definition: media-server.c:73
rtems_status_code rtems_media_post_event(rtems_media_event event, const char *src, char **dest, rtems_media_worker worker, void *worker_arg)
Posts the event with source src.
Definition: media.c:919
rtems_status_code rtems_media_listener_remove(rtems_media_listener listener, void *listener_arg)
Removes the listener with argument listener_arg.
Definition: media.c:136
char * rtems_media_create_path(const char *prefix, const char *name, rtems_device_major_number major)
Creates a new path as "prefix/name-major".
Definition: media-path.c:31
Priority_Control rtems_task_priority
Define the type for an RTEMS API task priority.
Definition: tasks.h:79
rtems_status_code
Classic API Status.
Definition: status.h:46
char * rtems_media_append_minor(const char *path, rtems_device_minor_number minor)
Appends the minor number to the path resulting in "path-minor".
Definition: media-path.c:69
char * rtems_media_replace_prefix(const char *new_prefix, const char *path)
Replaces the prefix of the path with new_prefix.
Definition: media-path.c:51
rtems_status_code rtems_media_listener_add(rtems_media_listener listener, void *listener_arg)
Adds the listener with argument listener_arg.
Definition: media.c:106
Definition: testparallel.c:92
rtems_media_event
Disk life cycle events:
Definition: media.h:66
rtems_status_code rtems_media_server_post_event(rtems_media_event event, const char *src, rtems_media_worker worker, void *worker_arg)
Sends an event message to the media server.
Definition: media-server.c:117
rtems_status_code(* rtems_media_worker)(rtems_media_state state, const char *src, char **dest, void *worker_arg)
Do the work corresponding to an event.
Definition: media.h:306
rtems_media_state
Normal state transition:
Definition: media.h:88
rtems_status_code rtems_media_get_device_identifier(const char *device_path, dev_t *device_identifier)
Returns the device identifier for the device located at device_path in device_identifier.
Definition: media-dev-ident.c:31
Modes_Control rtems_mode
Task mode type.
Definition: types.h:167
rtems_status_code rtems_media_initialize(void)
Initializes the media manager.
Definition: media.c:966