Added the disk device API to the libbe_haiku.so, so that libtracker.so builds

again for target libbe_test. Added respective syscall stubs and other functions
to libhaikucompat.a.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20447 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2007-03-28 15:20:08 +00:00
parent b31ca0ae08
commit b8ba8f58d7
9 changed files with 646 additions and 19 deletions
+2 -1
View File
@@ -639,7 +639,8 @@ if $(TARGET_PLATFORM) != haiku && $(TARGET_PLATFORM_BEOS_COMPATIBLE) {
if $(TARGET_PLATFORM) = libbe_test {
# headers and flags
TARGET_HDRS += [ PublicHeaders app game interface storage support ]
TARGET_HDRS +=
[ PublicHeaders app drivers game interface kernel storage support ]
[ PrivateHeaders $(DOT) ] ;
TARGET_DEFINES += __HAIKU__ ;
+156
View File
@@ -0,0 +1,156 @@
/*
* Copyright 2003-2006, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _DISK_DEVICE_DEFS_H
#define _DISK_DEVICE_DEFS_H
#include <SupportDefs.h>
typedef int32 partition_id;
typedef int32 disk_system_id;
typedef int32 disk_job_id;
// partition flags
enum {
B_PARTITION_IS_DEVICE = 0x01,
B_PARTITION_FILE_SYSTEM = 0x02,
B_PARTITION_PARTITIONING_SYSTEM = 0x04,
B_PARTITION_READ_ONLY = 0x08,
B_PARTITION_MOUNTED = 0x10, // needed?
B_PARTITION_BUSY = 0x20,
B_PARTITION_DESCENDANT_BUSY = 0x40,
};
// partition statuses
enum {
B_PARTITION_VALID,
B_PARTITION_CORRUPT,
B_PARTITION_UNRECOGNIZED,
B_PARTITION_UNINITIALIZED, // Only when uninitialized manually.
// When not recognized while scanning it's
// B_PARTITION_UNRECOGNIZED.
};
// partition change flags
enum {
B_PARTITION_CHANGED_OFFSET = 0x000001,
B_PARTITION_CHANGED_SIZE = 0x000002,
B_PARTITION_CHANGED_CONTENT_SIZE = 0x000004,
B_PARTITION_CHANGED_BLOCK_SIZE = 0x000008,
B_PARTITION_CHANGED_STATUS = 0x000010,
B_PARTITION_CHANGED_FLAGS = 0x000020,
B_PARTITION_CHANGED_VOLUME = 0x000040,
B_PARTITION_CHANGED_NAME = 0x000080,
B_PARTITION_CHANGED_CONTENT_NAME = 0x000100,
B_PARTITION_CHANGED_TYPE = 0x000200,
B_PARTITION_CHANGED_CONTENT_TYPE = 0x000400,
B_PARTITION_CHANGED_PARAMETERS = 0x000800,
B_PARTITION_CHANGED_CONTENT_PARAMETERS = 0x001000,
B_PARTITION_CHANGED_CHILDREN = 0x002000,
B_PARTITION_CHANGED_DESCENDANTS = 0x004000,
B_PARTITION_CHANGED_DEFRAGMENTATION = 0x008000,
B_PARTITION_CHANGED_CHECK = 0x010000,
B_PARTITION_CHANGED_REPAIR = 0x020000,
B_PARTITION_CHANGED_INITIALIZATION = 0x040000,
};
// disk device flags
enum {
B_DISK_DEVICE_REMOVABLE = 0x01,
B_DISK_DEVICE_HAS_MEDIA = 0x02,
B_DISK_DEVICE_READ_ONLY = 0x04,
B_DISK_DEVICE_WRITE_ONCE = 0x08,
};
// disk system flags
enum {
B_DISK_SYSTEM_IS_FILE_SYSTEM = 0x0001,
// flags common for both file and partitioning systems
B_DISK_SYSTEM_SUPPORTS_CHECKING = 0x0002,
B_DISK_SYSTEM_SUPPORTS_REPAIRING = 0x0004,
B_DISK_SYSTEM_SUPPORTS_RESIZING = 0x0008,
B_DISK_SYSTEM_SUPPORTS_MOVING = 0x0010,
B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME = 0x0020,
B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS = 0x0040,
// file system specific flags
B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING = 0x0100,
B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING_WHILE_MOUNTED = 0x0200,
B_DISK_SYSTEM_SUPPORTS_CHECKING_WHILE_MOUNTED = 0x0400,
B_DISK_SYSTEM_SUPPORTS_REPAIRING_WHILE_MOUNTED = 0x0800,
B_DISK_SYSTEM_SUPPORTS_RESIZING_WHILE_MOUNTED = 0x1000,
B_DISK_SYSTEM_SUPPORTS_MOVING_WHILE_MOUNTED = 0x2000,
B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME_WHILE_MOUNTED = 0x4000,
B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS_WHILE_MOUNTED = 0x8000,
// partitioning system specific flags
B_DISK_SYSTEM_SUPPORTS_RESIZING_CHILD = 0x0100,
B_DISK_SYSTEM_SUPPORTS_MOVING_CHILD = 0x0200,
B_DISK_SYSTEM_SUPPORTS_SETTING_NAME = 0x0400,
B_DISK_SYSTEM_SUPPORTS_SETTING_TYPE = 0x0800,
B_DISK_SYSTEM_SUPPORTS_SETTING_PARAMETERS = 0x1000,
B_DISK_SYSTEM_SUPPORTS_CREATING_CHILD = 0x2000,
B_DISK_SYSTEM_SUPPORTS_DELETING_CHILD = 0x4000,
B_DISK_SYSTEM_SUPPORTS_INITIALIZING = 0x8000,
};
// disk device job types
enum {
B_DISK_DEVICE_JOB_BAD_TYPE,
B_DISK_DEVICE_JOB_DEFRAGMENT,
B_DISK_DEVICE_JOB_REPAIR,
B_DISK_DEVICE_JOB_RESIZE,
B_DISK_DEVICE_JOB_MOVE,
B_DISK_DEVICE_JOB_SET_NAME,
B_DISK_DEVICE_JOB_SET_CONTENT_NAME,
B_DISK_DEVICE_JOB_SET_TYPE,
B_DISK_DEVICE_JOB_SET_PARMETERS,
B_DISK_DEVICE_JOB_SET_CONTENT_PARMETERS,
B_DISK_DEVICE_JOB_INITIALIZE,
B_DISK_DEVICE_JOB_UNINITIALIZE,
B_DISK_DEVICE_JOB_CREATE,
B_DISK_DEVICE_JOB_DELETE,
B_DISK_DEVICE_JOB_SCAN,
};
// disk device job statuses
enum {
B_DISK_DEVICE_JOB_UNINITIALIZED,
B_DISK_DEVICE_JOB_SCHEDULED,
B_DISK_DEVICE_JOB_IN_PROGRESS,
B_DISK_DEVICE_JOB_SUCCEEDED,
B_DISK_DEVICE_JOB_FAILED,
B_DISK_DEVICE_JOB_CANCELED,
};
// disk device job progress info
typedef struct disk_device_job_progress_info {
uint32 status;
uint32 interrupt_properties;
int32 task_count;
int32 completed_tasks;
float current_task_progress;
char current_task_description[256];
} disk_device_job_progress_info;
// disk device job interrupt properties
enum {
B_DISK_DEVICE_JOB_CAN_CANCEL = 0x01,
B_DISK_DEVICE_JOB_STOP_ON_CANCEL = 0x02,
B_DISK_DEVICE_JOB_REVERSE_ON_CANCEL = 0x04,
B_DISK_DEVICE_JOB_CAN_PAUSE = 0x08,
};
// string length constants, all of which include the NULL terminator
#define B_DISK_DEVICE_TYPE_LENGTH B_FILE_NAME_LENGTH
#define B_DISK_DEVICE_NAME_LENGTH B_FILE_NAME_LENGTH
#define B_DISK_SYSTEM_NAME_LENGTH B_PATH_NAME_LENGTH
// max size of parameter string buffers, including NULL terminator
#define B_DISK_DEVICE_MAX_PARAMETER_SIZE (32 * 1024)
#endif // _DISK_DEVICE_DEFS_H
+14 -11
View File
@@ -9,6 +9,7 @@
#include <OS.h>
#include <image.h>
//#include <disk_device_manager/ddm_userland_interface.h>
#include <storage/DiskDeviceDefs.h>
//#include <sys/select.h>
#include <sys/uio.h>
@@ -290,13 +291,13 @@ extern status_t _kern_unlock_node(int fd);
/* Disk Device Manager syscalls */
/*
// iterating, retrieving device/partition data
extern partition_id _kern_get_next_disk_device_id(int32 *cookie, size_t *neededSize);
extern partition_id _kern_find_disk_device(const char *filename, size_t *neededSize);
extern partition_id _kern_find_partition(const char *filename, size_t *neededSize);
extern status_t _kern_get_disk_device_data(partition_id deviceID, bool deviceOnly,
bool shadow, user_disk_device_data *buffer,
bool shadow, struct user_disk_device_data *buffer,
size_t bufferSize, size_t *neededSize);
extern partition_id _kern_register_file_device(const char *filename);
extern status_t _kern_unregister_file_device(partition_id deviceID,
@@ -306,10 +307,11 @@ extern status_t _kern_unregister_file_device(partition_id deviceID,
// disk systems
extern status_t _kern_get_disk_system_info(disk_system_id id,
user_disk_system_info *info);
struct user_disk_system_info *info);
extern status_t _kern_get_next_disk_system_info(int32 *cookie,
user_disk_system_info *info);
extern status_t _kern_find_disk_system(const char *name, user_disk_system_info *info);
struct user_disk_system_info *info);
extern status_t _kern_find_disk_system(const char *name,
struct user_disk_system_info *info);
extern bool _kern_supports_defragmenting_partition(partition_id partitionID,
int32 changeCounter, bool *whileMounted);
extern bool _kern_supports_repairing_partition(partition_id partitionID,
@@ -356,8 +358,9 @@ extern status_t _kern_validate_create_child_partition(partition_id partitionID,
const char *type, const char *parameters,
size_t parametersSize);
extern status_t _kern_get_partitionable_spaces(partition_id partitionID,
int32 changeCounter, partitionable_space_data *buffer,
int32 count, int32 *actualCount);
int32 changeCounter,
struct partitionable_space_data *buffer, int32 count,
int32 *actualCount);
extern status_t _kern_get_next_supported_partition_type(partition_id partitionID,
int32 changeCounter, int32 *cookie, char *type);
extern status_t _kern_get_partition_type_for_content_type(disk_system_id diskSystemID,
@@ -403,13 +406,13 @@ extern status_t _kern_delete_partition(partition_id partitionID, int32 changeCo
// jobs
extern status_t _kern_get_next_disk_device_job_info(int32 *cookie,
user_disk_device_job_info *info);
struct user_disk_device_job_info *info);
extern status_t _kern_get_disk_device_job_info(disk_job_id id,
user_disk_device_job_info *info);
struct user_disk_device_job_info *info);
extern status_t _kern_get_disk_device_job_progress_info(disk_job_id id,
disk_device_job_progress_info *info);
struct disk_device_job_progress_info *info);
extern status_t _kern_pause_disk_device_job(disk_job_id id);
extern status_t _kern_cancel_disk_device_job(disk_job_id id, bool reverse);*/
extern status_t _kern_cancel_disk_device_job(disk_job_id id, bool reverse);
#if 0
+5
View File
@@ -2,11 +2,16 @@ SubDir HAIKU_TOP src build libhaikucompat ;
SetSubDirSupportedPlatforms libbe_test r5 dano bone ;
UseHeaders [ FDirName $(HAIKU_TOP) headers build private kernel ] : true ;
StaticLibrary libhaikucompat.a :
strcasestr.c
strlcat.c
strlcpy.c
strnlen.c
misc.cpp
syscalls.cpp
;
SEARCH on [ FGristFiles strcasestr.c strlcat.c strlcpy.c strnlen.c ]
+30
View File
@@ -0,0 +1,30 @@
#include <stdarg.h>
#include <stdio.h>
#include <fs_volume.h>
extern "C" void
debug_printf(const char *format, ...)
{
va_list list;
va_start(list, format);
vprintf(format, list);
va_end(list);
}
dev_t
fs_mount_volume(const char *where, const char *device, const char *filesystem,
uint32 flags, const char *parameters)
{
return B_ERROR;
}
status_t
fs_unmount_volume(const char *path, uint32 flags)
{
return B_ERROR;
}
+436
View File
@@ -0,0 +1,436 @@
#include <stdarg.h>
#include <stdio.h>
#include <syscalls.h>
// #prama mark - iterating, retrieving device/partition data
partition_id
_kern_get_next_disk_device_id(int32 *cookie, size_t *neededSize)
{
return -1;
}
partition_id
_kern_find_disk_device(const char *filename, size_t *neededSize)
{
return -1;
}
partition_id
_kern_find_partition(const char *filename, size_t *neededSize)
{
return -1;
}
status_t
_kern_get_disk_device_data(partition_id deviceID, bool deviceOnly,
bool shadow, struct user_disk_device_data *buffer, size_t bufferSize,
size_t *neededSize)
{
return B_ERROR;
}
partition_id
_kern_register_file_device(const char *filename)
{
return -1;
}
status_t
_kern_unregister_file_device(partition_id deviceID, const char *filename)
{
return B_ERROR;
}
// #pragma mark - disk systems
status_t
_kern_get_disk_system_info(disk_system_id id,
struct user_disk_system_info *info)
{
return B_ERROR;
}
status_t
_kern_get_next_disk_system_info(int32 *cookie,
struct user_disk_system_info *info)
{
return B_ERROR;
}
status_t
_kern_find_disk_system(const char *name,
struct user_disk_system_info *info)
{
return B_ERROR;
}
bool
_kern_supports_defragmenting_partition(partition_id partitionID,
int32 changeCounter, bool *whileMounted)
{
return false;
}
bool
_kern_supports_repairing_partition(partition_id partitionID,
int32 changeCounter, bool checkOnly, bool *whileMounted)
{
return false;
}
bool
_kern_supports_resizing_partition(partition_id partitionID,
int32 changeCounter, bool *canResizeContents, bool *whileMounted)
{
return false;
}
bool
_kern_supports_moving_partition(partition_id partitionID,
int32 changeCounter, partition_id *unmovable,
partition_id *needUnmounting, size_t bufferSize)
{
return false;
}
bool
_kern_supports_setting_partition_name(partition_id partitionID,
int32 changeCounter)
{
return false;
}
bool
_kern_supports_setting_partition_content_name(partition_id partitionID,
int32 changeCounter, bool *whileMounted)
{
return false;
}
bool
_kern_supports_setting_partition_type(partition_id partitionID,
int32 changeCounter)
{
return false;
}
bool
_kern_supports_setting_partition_parameters(partition_id partitionID,
int32 changeCounter)
{
return false;
}
bool
_kern_supports_setting_partition_content_parameters(
partition_id partitionID, int32 changeCounter, bool *whileMounted)
{
return false;
}
bool
_kern_supports_initializing_partition(partition_id partitionID,
int32 changeCounter, const char *diskSystemName)
{
return false;
}
bool
_kern_supports_creating_child_partition(partition_id partitionID,
int32 changeCounter)
{
return false;
}
bool
_kern_supports_deleting_child_partition(partition_id partitionID,
int32 changeCounter)
{
return false;
}
bool
_kern_is_sub_disk_system_for(disk_system_id diskSystemID,
partition_id partitionID, int32 changeCounter)
{
return false;
}
status_t
_kern_validate_resize_partition(partition_id partitionID, int32 changeCounter,
off_t *size)
{
return B_ERROR;
}
status_t
_kern_validate_move_partition(partition_id partitionID, int32 changeCounter,
off_t *newOffset)
{
return B_ERROR;
}
status_t
_kern_validate_set_partition_name(partition_id partitionID, int32 changeCounter,
char *name)
{
return B_ERROR;
}
status_t
_kern_validate_set_partition_content_name(partition_id partitionID,
int32 changeCounter, char *name)
{
return B_ERROR;
}
status_t
_kern_validate_set_partition_type(partition_id partitionID, int32 changeCounter,
const char *type)
{
return B_ERROR;
}
status_t
_kern_validate_initialize_partition(partition_id partitionID,
int32 changeCounter, const char *diskSystemName, char *name,
const char *parameters, size_t parametersSize)
{
return B_ERROR;
}
status_t
_kern_validate_create_child_partition(partition_id partitionID,
int32 changeCounter, off_t *offset, off_t *size, const char *type,
const char *parameters, size_t parametersSize)
{
return B_ERROR;
}
status_t
_kern_get_partitionable_spaces(partition_id partitionID, int32 changeCounter,
struct partitionable_space_data *buffer, int32 count, int32 *actualCount)
{
return B_ERROR;
}
status_t
_kern_get_next_supported_partition_type(partition_id partitionID,
int32 changeCounter, int32 *cookie, char *type)
{
return B_ERROR;
}
status_t
_kern_get_partition_type_for_content_type(disk_system_id diskSystemID,
const char *contentType, char *type)
{
return B_ERROR;
}
// #pragma mark - disk device modification
status_t
_kern_prepare_disk_device_modifications(partition_id deviceID)
{
return B_ERROR;
}
status_t
_kern_commit_disk_device_modifications(partition_id deviceID,
port_id port, int32 token, bool completeProgress)
{
return B_ERROR;
}
status_t
_kern_cancel_disk_device_modifications(partition_id deviceID)
{
return B_ERROR;
}
bool
_kern_is_disk_device_modified(partition_id deviceID)
{
return false;
}
status_t
_kern_defragment_partition(partition_id partitionID, int32 changeCounter)
{
return B_ERROR;
}
status_t
_kern_repair_partition(partition_id partitionID, int32 changeCounter,
bool checkOnly)
{
return B_ERROR;
}
status_t
_kern_resize_partition(partition_id partitionID, int32 changeCounter,
off_t size)
{
return B_ERROR;
}
status_t
_kern_move_partition(partition_id partitionID, int32 changeCounter,
off_t newOffset)
{
return B_ERROR;
}
status_t
_kern_set_partition_name(partition_id partitionID, int32 changeCounter,
const char *name)
{
return B_ERROR;
}
status_t
_kern_set_partition_content_name(partition_id partitionID,
int32 changeCounter, const char *name)
{
return B_ERROR;
}
status_t
_kern_set_partition_type(partition_id partitionID, int32 changeCounter,
const char *type)
{
return B_ERROR;
}
status_t
_kern_set_partition_parameters(partition_id partitionID, int32 changeCounter,
const char *parameters, size_t parametersSize)
{
return B_ERROR;
}
status_t
_kern_set_partition_content_parameters(partition_id partitionID,
int32 changeCounter, const char *parameters, size_t parametersSize)
{
return B_ERROR;
}
status_t
_kern_initialize_partition(partition_id partitionID, int32 changeCounter,
const char *diskSystemName, const char *name, const char *parameters,
size_t parametersSize)
{
return B_ERROR;
}
status_t
_kern_uninitialize_partition(partition_id partitionID, int32 changeCounter)
{
return B_ERROR;
}
status_t
_kern_create_child_partition(partition_id partitionID, int32 changeCounter,
off_t offset, off_t size, const char *type, const char *parameters,
size_t parametersSize, partition_id *childID)
{
return B_ERROR;
}
status_t
_kern_delete_partition(partition_id partitionID, int32 changeCounter)
{
return B_ERROR;
}
// #pragma mark - jobs
status_t
_kern_get_next_disk_device_job_info(int32 *cookie,
struct user_disk_device_job_info *info)
{
return B_ERROR;
}
status_t
_kern_get_disk_device_job_info(disk_job_id id,
struct user_disk_device_job_info *info)
{
return B_ERROR;
}
status_t
_kern_get_disk_device_job_progress_info(disk_job_id id,
struct disk_device_job_progress_info *info)
{
return B_ERROR;
}
status_t
_kern_pause_disk_device_job(disk_job_id id)
{
return B_ERROR;
}
status_t
_kern_cancel_disk_device_job(disk_job_id id, bool reverse)
{
return B_ERROR;
}
-1
View File
@@ -30,7 +30,6 @@ SharedLibrary libbe.so :
<libbe>app_kit.o
<libbe>interface_kit.o
<libbe>storage_kit.o
<libbe>storage_diskdevice_kit.o
<libbe>support_kit.o
libqoca.so
+2 -6
View File
@@ -67,13 +67,8 @@ MergeObject <libbe>storage_kit.o :
RPattern.cpp
RPatternList.cpp
Rule.cpp
;
# We need to keep the DiskDevice API out of libbe_haiku as long as the
# Interface Kit is not fully functional (at least the part we are using).
# So, we build it separately.
MergeObject <libbe>storage_diskdevice_kit.o :
# disk device API
DiskDevice.cpp
DiskDeviceJob.cpp
DiskDeviceList.cpp
@@ -86,6 +81,7 @@ MergeObject <libbe>storage_diskdevice_kit.o :
PartitioningInfo.cpp
;
# The adapter library we need (Storage Kit).
#
+1
View File
@@ -57,6 +57,7 @@ All rights reserved.
#include <VolumeRoster.h>
#include <string.h>
#include <unistd.h>
static const char *kAutoMounterSettings = "automounter_settings";