source: mainline/uspace/srv/logger/logger.h@ 984a9ba

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 984a9ba was 984a9ba, checked in by Martin Decky <martin@…>, 7 years ago

do not expose the call capability handler from the async framework

Keep the call capability handler encapsulated within the async framework
and do not expose it explicitly via its API. Use the pointer to
ipc_call_t as the sole object identifying an IPC call in the code that
uses the async framework.

This plugs a major leak in the abstraction and also simplifies both the
async framework (slightly) and all IPC servers.

  • Property mode set to 100644
File size: 3.2 KB
Line 
1/*
2 * Copyright (c) 2012 Vojtech Horky
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup logger
30 * @{
31 */
32/** @file Common logger service definitions.
33 */
34
35#ifndef LOGGER_H_
36#define LOGGER_H_
37
38#include <adt/list.h>
39#include <adt/prodcons.h>
40#include <io/log.h>
41#include <async.h>
42#include <stdbool.h>
43#include <fibril_synch.h>
44#include <stdio.h>
45
46#define NAME "logger"
47#define LOG_LEVEL_USE_DEFAULT (LVL_LIMIT + 1)
48
49#ifdef LOGGER_LOG
50#define logger_log(fmt, ...) printf(NAME ": " fmt, ##__VA_ARGS__)
51#else
52#define logger_log(fmt, ...) (void)0
53#endif
54
55typedef struct logger_log logger_log_t;
56
57typedef struct {
58 fibril_mutex_t guard;
59 char *filename;
60 FILE *logfile;
61} logger_dest_t;
62
63struct logger_log {
64 link_t link;
65
66 size_t ref_counter;
67
68 fibril_mutex_t guard;
69
70 char *name;
71 char *full_name;
72 logger_log_t *parent;
73 log_level_t logged_level;
74 logger_dest_t *dest;
75};
76
77#define MAX_REFERENCED_LOGS_PER_CLIENT 100
78
79typedef struct {
80 size_t logs_count;
81 logger_log_t *logs[MAX_REFERENCED_LOGS_PER_CLIENT];
82} logger_registered_logs_t;
83
84logger_log_t *find_log_by_name_and_lock(const char *name);
85logger_log_t *find_or_create_log_and_lock(const char *, sysarg_t);
86logger_log_t *find_log_by_id_and_lock(sysarg_t);
87bool shall_log_message(logger_log_t *, log_level_t);
88void log_unlock(logger_log_t *);
89void write_to_log(logger_log_t *, log_level_t, const char *);
90void log_release(logger_log_t *);
91
92void registered_logs_init(logger_registered_logs_t *);
93bool register_log(logger_registered_logs_t *, logger_log_t *);
94void unregister_logs(logger_registered_logs_t *);
95
96log_level_t get_default_logging_level(void);
97errno_t set_default_logging_level(log_level_t);
98
99
100void logger_connection_handler_control(ipc_call_t *);
101void logger_connection_handler_writer(ipc_call_t *);
102
103void parse_initial_settings(void);
104void parse_level_settings(char *);
105
106#endif
107
108/** @}
109 */
Note: See TracBrowser for help on using the repository browser.