}
/**
- * Map a file into memory.
+ * Open a file and map it into memory.
*
* \param path Name of the regular file to map.
* \param open_mode Either \p O_RDONLY or \p O_RDWR.
- * \param obj On success, the mapping is returned here.
+ * \param map On success, the mapping is returned here.
+ * \param size size of the mapping.
+ * \param fd_ptr The file descriptor of the mapping.
+ *
+ * If \a fd_ptr is \p NULL, the file descriptor resulting from the underlying
+ * open call is closed after mmap(). Otherwise the file is kept open and the
+ * file descriptor is returned in \a fd_ptr.
*
* \return Positive on success, negative on errors. Possible errors include: \p
* E_FSTAT, any errors returned by para_open(), \p E_EMPTY, \p E_MMAP.
* Licensed under the GPL v2. For licencing details see COPYING.
*/
-/** \file server.c Paraslash's main server */
+/** \file server.c Paraslash's main server. */
/** \mainpage Paraslash API Reference
*
- * Good starting points for reading are probably \ref audio_file_selector,
- * \ref sender, \ref receiver, \ref receiver_node, \ref filter, \ref
- * filter_node.
+ * Starting points for getting an overview are
+ *
+ * probably:
+ *
+ * - The main programs: \ref server.c, \ref audiod.c, \ref client.c,
+ * \ref audioc.c, \ref fsck.c
+ * - Server: \ref server_command, \ref sender,
+ * - Audio file selector: \ref audio_format_handler, \ref mood, \ref afs_table,
+ * - Client: \ref receiver, \ref receiver_node, \ref filter, \ref filter_node
+ *
+ *
+ * The gory details, listed by topic:
+ *
+ * - Audio format handlers: \ref mp3_afh.c, \ref ogg_afh.c \ref aac_afh.c
+ * - Decoders: \ref mp3dec.c, \ref \ref oggdec.c, \ref aacdec.c
+ * - Volume normalizer: \ref compress.c
+ * - Output: \ref alsa_write.c, \ref osx_write.c
+ * - http: \ref http_recv.c, \ref http_send.c
+ * - ortp: \ref ortp_recv.c, \ref ortp_send.c
+ * - dccp: \ref dccp_recv.c, \ref dccp_send.c
+ * - Audio file selector: \ref afs.c, \ref aft.c, \ref mood.c
+ * - Afs structures: \ref afs_table, \ref audio_file_data,
+ * \ref afs_info \ref audio_format_info,
+ * - Afs tables: \ref aft.c, \ref mood.c, \ref playlist.c,
+ * \ref attribute.c, \ref score.c.
+ *
+ * Lower levels:
+ *
+ * - Scheduling: \ref sched.c, \ref sched.h
+ * - Networking: \ref net.c,
+ * - File descriptors: \ref fd.c,
+ * - Signals: \ref signal.c,
+ * - Daemons: \ref daemon.c,
+ * - Strings: \ref string.c, string.h
+ * - Time: \ref time.c, time.h
+ * - Spawning processes: \ref exec.c
+ * - Inter process communication: ipc.c,
+ * - The object storage layer: \ref osl.c,
+ * - Blob tables: blob.c,
+ * - Queueing chunks of audio data: \ref chunk_queue.c
+ * - The error subssystem: \ref error.h
+ *
+ * Lov-level data structures:
+ *
+ * - Doubly linked lists: \ref list.h,
+ * - Red-black trees: \ref rbtree.h, \ref rbtree.c
+ * - Ring buffer: \ref ringbuffer.c, \ref ringbuffer.h
+ * - Hashing: \ref hash.h, \ref sha1.h, \ref sha1.c
+ * - Crypto: \ref crypt.c
*
*/
#define ALARM_TIMEOUT 10
/**
- * pointer to shared memory area for communication between para_server
- * and its children. exported to vss.c. command.c and to all selectors.
+ * Pointer to shared memory area for communication between para_server
+ * and its children. Exported to vss.c. command.c and to afs.
*/
struct misc_meta_data *mmd;
/**
* the configuration of para_server
*
- * It also contains the options for all audio file selectors, audio format handler
- * and all supported senders.
+ * It also contains the options for the audio file selector, audio format
+ * handler and all supported senders.
*/
struct server_args_info conf;
/**
* lock the shared memory area containing the mmd struct
*
- * \sa semop(2), struct misc_meta_data
+ * \sa semop(2), struct misc_meta_data.
*/
void mmd_lock(void)
{