00001 /* -*- c -*- */ 00009 /* (c) 2004 Technische Universitaet Dresden 00010 * This file is part of DROPS, which is distributed under the terms of the 00011 * GNU General Public License 2. Please see the COPYING file for details. 00012 */ 00013 import <l4/sys/types.h> 00014 import <l4/l4vfs/types.h> 00015 00019 library l4vfs 00020 { 00024 [uuid(1000), abstract] 00025 interface basic_name_server 00026 { 00027 /* get a new object-id, based on a base and an relativ path 00028 * One could implement a special case for absolute pathnames 00029 * but this issue can also be solved with one function. 00030 */ 00031 object_id_t resolve([in] object_id_t base, 00032 [in, string] char * pathname); 00033 00034 /* Translate an object-id to a symbolic name. 00035 * This might be implemented partially. In that case the 00036 * parent's object-id is returned, so that the call might be 00037 * repeated to another server. The resulting strings can be 00038 * concatenated. parent also is an upper bound which is not 00039 * crossed by the rev_translating server. So a mount-table 00040 * maintaining server, such as the name server, can limit the 00041 * translation to the mounted point (which needn't be the root). 00042 * The call to the root-name server should return the full 00043 * name in one step. 00044 * 00045 * A return value of NULL indicates an error conndition, usually 00046 * because the name was not rev_resolvable. 00047 */ 00048 char * rev_resolve([in] object_id_t dest, 00049 [in, out] object_id_t * parent); 00050 00051 /* Translate a volume-id to a serving thread. 00052 * 00053 * In case of error a the value L4_INVALID_ID is returned. 00054 */ 00055 l4_threadid_t thread_for_volume([in] volume_id_t volume_id); 00056 }; 00057 };