Author: andreasf Date: 2010-06-26 19:38:03 +0200 (Sat, 26 Jun 2010) New Revision: 37265 Changeset: http://dev.haiku-os.org/changeset/37265/haiku Modified: haiku/trunk/headers/private/kernel/boot/FileMapDisk.h haiku/trunk/headers/private/kernel/boot/arch.h haiku/trunk/headers/private/kernel/boot/net/RemoteDisk.h haiku/trunk/headers/private/kernel/boot/net/RemoteDiskDefs.h haiku/trunk/headers/private/kernel/platform/openfirmware/devices.h haiku/trunk/src/system/boot/loader/FileMapDisk.cpp haiku/trunk/src/system/boot/loader/net/RemoteDisk.cpp haiku/trunk/src/system/boot/platform/openfirmware/arch/ppc/cpu.cpp haiku/trunk/src/system/boot/platform/openfirmware/real_time_clock.cpp haiku/trunk/src/system/boot/platform/openfirmware/real_time_clock.h haiku/trunk/src/system/boot/platform/openfirmware/support.cpp haiku/trunk/src/system/kernel/arch/ppc/arch_platform.cpp Log: Convert line endings to LF In r33670 the svn:eol-style property was dropped, which took care of locally converting the line endings to the user's native style. While most files use Unix-style LF line endings, some files have Windows-style CR LF line endings. Assure that the following r37262 directories use Unix-style line endings: src/system/boot/ src/system/boot/arch/ src/system/boot/arch/ppc/ src/system/boot/loader/ src/system/boot/loader/net/ src/system/boot/platform/ src/system/boot/platform/openfirmware/ src/system/boot/platform/openfirmware/arch/ src/system/boot/platform/openfirmware/arch/ppc/ src/system/kernel/ src/system/kernel/arch/ src/system/kernel/arch/ppc/ src/system/kernel/platform/ src/system/kernel/platform/openfirmware/ headers/private/kernel/ headers/private/kernel/arch/ headers/private/kernel/arch/ppc/ headers/private/kernel/platform/ headers/private/kernel/platform/openfirmware/ headers/private/kernel/boot/ headers/private/kernel/boot/net/ headers/private/kernel/boot/platform/ headers/private/kernel/boot/platform/openfirmware/ This avoids patches containing irrelevant lines unintentionally converted. No functional changes. Modified: haiku/trunk/headers/private/kernel/boot/FileMapDisk.h =================================================================== --- haiku/trunk/headers/private/kernel/boot/FileMapDisk.h 2010-06-26 17:35:16 UTC (rev 37264) +++ haiku/trunk/headers/private/kernel/boot/FileMapDisk.h 2010-06-26 17:38:03 UTC (rev 37265) @@ -1,79 +1,79 @@ -/* - * Copyright 2008, François Revol <revol@xxxxxxx>. - * All rights reserved. Distributed under the terms of the MIT License. - */ - -#ifndef _BOOT_FILE_MAP_DISK_H -#define _BOOT_FILE_MAP_DISK_H - -#include <boot/vfs.h> -#include <boot/partitions.h> - -#define FMAP_FOLDER_NAME "BEOS" -#define FMAP_IMAGE_NAME "IMAGE.BE" -//#define FMAP_FOLDER_NAME "HAIKU" -//#define FMAP_IMAGE_NAME "IMAGE.BFS" - -#define FMAP_MAX_RUNS 128 - -struct file_map_run { - off_t offset; - off_t block; - off_t len; -}; - -struct file_map_boot_item { - int32 block_size; - int32 num_runs; - struct file_map_run runs[FMAP_MAX_RUNS]; -}; - -#ifdef _BOOT_MODE - -class FileMap { -public: - FileMap(); - ~FileMap(); - void AddRun(off_t offset, off_t block, off_t len); - -private: - struct file_map_run fRuns[FMAP_MAX_RUNS]; -}; - -class FileMapDisk : public Node { - public: - FileMapDisk(); - virtual ~FileMapDisk(); - - status_t Init(Node *node/*Partition *partition, FileMap *map, off_t imageSize*/); - - virtual status_t Open(void **_cookie, int mode); - virtual status_t Close(void *cookie); - - - virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, - size_t bufferSize); - virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, - size_t bufferSize); - - virtual status_t GetName(char *nameBuffer, size_t bufferSize) const; - virtual status_t GetFileMap(struct file_map_run *runs, int32 *count); - virtual off_t Size() const; - - static FileMapDisk *FindAnyFileMapDisk(Directory *volume); - - status_t RegisterFileMapBootItem(); - - private: - Node *fNode; - /* - Partition *fPartition; - FileMap *fMap; - off_t fImageSize; - */ - -}; - -#endif // _BOOT_MODE - -#endif // _BOOT_FILE_MAP_DISK_H +/* + * Copyright 2008, François Revol <revol@xxxxxxx>. + * All rights reserved. Distributed under the terms of the MIT License. + */ + +#ifndef _BOOT_FILE_MAP_DISK_H +#define _BOOT_FILE_MAP_DISK_H + +#include <boot/vfs.h> +#include <boot/partitions.h> + +#define FMAP_FOLDER_NAME "BEOS" +#define FMAP_IMAGE_NAME "IMAGE.BE" +//#define FMAP_FOLDER_NAME "HAIKU" +//#define FMAP_IMAGE_NAME "IMAGE.BFS" + +#define FMAP_MAX_RUNS 128 + +struct file_map_run { + off_t offset; + off_t block; + off_t len; +}; + +struct file_map_boot_item { + int32 block_size; + int32 num_runs; + struct file_map_run runs[FMAP_MAX_RUNS]; +}; + +#ifdef _BOOT_MODE + +class FileMap { +public: + FileMap(); + ~FileMap(); + void AddRun(off_t offset, off_t block, off_t len); + +private: + struct file_map_run fRuns[FMAP_MAX_RUNS]; +}; + +class FileMapDisk : public Node { + public: + FileMapDisk(); + virtual ~FileMapDisk(); + + status_t Init(Node *node/*Partition *partition, FileMap *map, off_t imageSize*/); + + virtual status_t Open(void **_cookie, int mode); + virtual status_t Close(void *cookie); + + + virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, + size_t bufferSize); + virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, + size_t bufferSize); + + virtual status_t GetName(char *nameBuffer, size_t bufferSize) const; + virtual status_t GetFileMap(struct file_map_run *runs, int32 *count); + virtual off_t Size() const; + + static FileMapDisk *FindAnyFileMapDisk(Directory *volume); + + status_t RegisterFileMapBootItem(); + + private: + Node *fNode; + /* + Partition *fPartition; + FileMap *fMap; + off_t fImageSize; + */ + +}; + +#endif // _BOOT_MODE + +#endif // _BOOT_FILE_MAP_DISK_H Modified: haiku/trunk/headers/private/kernel/boot/arch.h =================================================================== --- haiku/trunk/headers/private/kernel/boot/arch.h 2010-06-26 17:35:16 UTC (rev 37264) +++ haiku/trunk/headers/private/kernel/boot/arch.h 2010-06-26 17:38:03 UTC (rev 37265) @@ -1,28 +1,28 @@ -/* - * Copyright 2005, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. - * Distributed under the terms of the MIT License. - */ -#ifndef KERNEL_BOOT_ARCH_H -#define KERNEL_BOOT_ARCH_H - -#include <SupportDefs.h> -#include <boot/elf.h> - - -#ifdef __cplusplus -extern "C" { -#endif - -/* ELF support */ - -extern status_t boot_arch_elf_relocate_rel(struct preloaded_image *image, - struct Elf32_Rel *rel, int rel_len); -extern status_t boot_arch_elf_relocate_rela(struct preloaded_image *image, - struct Elf32_Rela *rel, int rel_len); - - -#ifdef __cplusplus -} -#endif - -#endif /* KERNEL_BOOT_ARCH_H */ +/* + * Copyright 2005, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. + * Distributed under the terms of the MIT License. + */ +#ifndef KERNEL_BOOT_ARCH_H +#define KERNEL_BOOT_ARCH_H + +#include <SupportDefs.h> +#include <boot/elf.h> + + +#ifdef __cplusplus +extern "C" { +#endif + +/* ELF support */ + +extern status_t boot_arch_elf_relocate_rel(struct preloaded_image *image, + struct Elf32_Rel *rel, int rel_len); +extern status_t boot_arch_elf_relocate_rela(struct preloaded_image *image, + struct Elf32_Rela *rel, int rel_len); + + +#ifdef __cplusplus +} +#endif + +#endif /* KERNEL_BOOT_ARCH_H */ Modified: haiku/trunk/headers/private/kernel/boot/net/RemoteDisk.h =================================================================== --- haiku/trunk/headers/private/kernel/boot/net/RemoteDisk.h 2010-06-26 17:35:16 UTC (rev 37264) +++ haiku/trunk/headers/private/kernel/boot/net/RemoteDisk.h 2010-06-26 17:38:03 UTC (rev 37265) @@ -1,54 +1,54 @@ -/* - * Copyright 2005, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. - * All rights reserved. Distributed under the terms of the MIT License. - */ - -#ifndef _BOOT_REMOTE_DISK_H -#define _BOOT_REMOTE_DISK_H - -#include <boot/vfs.h> -#include <boot/net/NetDefs.h> -#include <boot/net/RemoteDiskDefs.h> - -class UDPPacket; -class UDPSocket; - -class RemoteDisk : public Node { -public: - RemoteDisk(); - ~RemoteDisk(); - - status_t Init(ip_addr_t serverAddress, uint16 serverPort, off_t imageSize); - - virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, - size_t bufferSize); - virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, - size_t bufferSize); - - virtual status_t GetName(char *nameBuffer, size_t bufferSize) const; - virtual off_t Size() const; - - ip_addr_t ServerIPAddress() const; - uint16 ServerPort() const; - - static RemoteDisk *FindAnyRemoteDisk(); - -private: - ssize_t _ReadFromPacket(off_t &pos, uint8 *&buffer, size_t &bufferSize); - - static status_t _SendRequest(UDPSocket *socket, ip_addr_t serverAddress, - uint16 serverPort, remote_disk_header *request, size_t size, - uint8 expectedReply, UDPPacket **packet); - status_t _SendRequest(remote_disk_header *request, size_t size, - uint8 expectedReply, UDPPacket **packet); - -private: - ip_addr_t fServerAddress; - uint16 fServerPort; - off_t fImageSize; - uint64 fRequestID; - UDPSocket *fSocket; - UDPPacket *fPacket; -}; - -#endif // _BOOT_REMOTE_DISK_H +/* + * Copyright 2005, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. + * All rights reserved. Distributed under the terms of the MIT License. + */ + +#ifndef _BOOT_REMOTE_DISK_H +#define _BOOT_REMOTE_DISK_H + +#include <boot/vfs.h> +#include <boot/net/NetDefs.h> +#include <boot/net/RemoteDiskDefs.h> + +class UDPPacket; +class UDPSocket; + +class RemoteDisk : public Node { +public: + RemoteDisk(); + ~RemoteDisk(); + + status_t Init(ip_addr_t serverAddress, uint16 serverPort, off_t imageSize); + + virtual ssize_t ReadAt(void *cookie, off_t pos, void *buffer, + size_t bufferSize); + virtual ssize_t WriteAt(void *cookie, off_t pos, const void *buffer, + size_t bufferSize); + + virtual status_t GetName(char *nameBuffer, size_t bufferSize) const; + virtual off_t Size() const; + + ip_addr_t ServerIPAddress() const; + uint16 ServerPort() const; + + static RemoteDisk *FindAnyRemoteDisk(); + +private: + ssize_t _ReadFromPacket(off_t &pos, uint8 *&buffer, size_t &bufferSize); + + static status_t _SendRequest(UDPSocket *socket, ip_addr_t serverAddress, + uint16 serverPort, remote_disk_header *request, size_t size, + uint8 expectedReply, UDPPacket **packet); + status_t _SendRequest(remote_disk_header *request, size_t size, + uint8 expectedReply, UDPPacket **packet); + +private: + ip_addr_t fServerAddress; + uint16 fServerPort; + off_t fImageSize; + uint64 fRequestID; + UDPSocket *fSocket; + UDPPacket *fPacket; +}; + +#endif // _BOOT_REMOTE_DISK_H Modified: haiku/trunk/headers/private/kernel/boot/net/RemoteDiskDefs.h =================================================================== --- haiku/trunk/headers/private/kernel/boot/net/RemoteDiskDefs.h 2010-06-26 17:35:16 UTC (rev 37264) +++ haiku/trunk/headers/private/kernel/boot/net/RemoteDiskDefs.h 2010-06-26 17:38:03 UTC (rev 37265) @@ -1,64 +1,64 @@ -/* - * Copyright 2005-2007, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. - * All rights reserved. Distributed under the terms of the MIT License. - */ -#ifndef _BOOT_REMOTE_DISK_DEFS_H -#define _BOOT_REMOTE_DISK_DEFS_H - - -#include <inttypes.h> - - -enum { - REMOTE_DISK_SERVER_PORT = 8765, - REMOTE_DISK_BLOCK_SIZE = 1024, -}; - -enum { - // requests - - REMOTE_DISK_HELLO_REQUEST = 0, - // port: client port - - REMOTE_DISK_READ_REQUEST = 1, - // port: client port - // offset: byte offset of data to read - // size: number of bytes to read (server might serve more, though) - - REMOTE_DISK_WRITE_REQUEST = 2, - // port: client port - // offset: byte offset of data to write - // size: number of bytes to write - // data: the data - - // replies - - REMOTE_DISK_HELLO_REPLY = 3, - // offset: disk size - - REMOTE_DISK_READ_REPLY = 4, // port unused - // offset: byte offset of read data - // size: number of bytes of data read; < 0 => error - // data: read data - - REMOTE_DISK_WRITE_REPLY = 5, // port, data unused - // offset: byte offset of data written - // size: number of bytes of data written; < 0 => error -}; - -// errors -enum { - REMOTE_DISK_IO_ERROR = -1, - REMOTE_DISK_BAD_REQUEST = -2, -}; - -struct remote_disk_header { - uint64_t offset; - uint64_t request_id; - int16_t size; - uint16_t port; - uint8_t command; - uint8_t data[0]; -} __attribute__ ((__packed__)); - -#endif // _BOOT_REMOTE_DISK_DEFS_H +/* + * Copyright 2005-2007, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. + * All rights reserved. Distributed under the terms of the MIT License. + */ +#ifndef _BOOT_REMOTE_DISK_DEFS_H +#define _BOOT_REMOTE_DISK_DEFS_H + + +#include <inttypes.h> + + +enum { + REMOTE_DISK_SERVER_PORT = 8765, + REMOTE_DISK_BLOCK_SIZE = 1024, +}; + +enum { + // requests + + REMOTE_DISK_HELLO_REQUEST = 0, + // port: client port + + REMOTE_DISK_READ_REQUEST = 1, + // port: client port + // offset: byte offset of data to read + // size: number of bytes to read (server might serve more, though) + + REMOTE_DISK_WRITE_REQUEST = 2, + // port: client port + // offset: byte offset of data to write + // size: number of bytes to write + // data: the data + + // replies + + REMOTE_DISK_HELLO_REPLY = 3, + // offset: disk size + + REMOTE_DISK_READ_REPLY = 4, // port unused + // offset: byte offset of read data + // size: number of bytes of data read; < 0 => error + // data: read data + + REMOTE_DISK_WRITE_REPLY = 5, // port, data unused + // offset: byte offset of data written + // size: number of bytes of data written; < 0 => error +}; + +// errors +enum { + REMOTE_DISK_IO_ERROR = -1, + REMOTE_DISK_BAD_REQUEST = -2, +}; + +struct remote_disk_header { + uint64_t offset; + uint64_t request_id; + int16_t size; + uint16_t port; + uint8_t command; + uint8_t data[0]; +} __attribute__ ((__packed__)); + +#endif // _BOOT_REMOTE_DISK_DEFS_H Modified: haiku/trunk/headers/private/kernel/platform/openfirmware/devices.h =================================================================== --- haiku/trunk/headers/private/kernel/platform/openfirmware/devices.h 2010-06-26 17:35:16 UTC (rev 37264) +++ haiku/trunk/headers/private/kernel/platform/openfirmware/devices.h 2010-06-26 17:38:03 UTC (rev 37265) @@ -1,22 +1,22 @@ -/* - * Copyright 2005-2006, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. - * All rights reserved. Distributed under the terms of the MIT License. - */ - -#ifndef _KERNEL_OPEN_FIRMWARE_DEVICES_H -#define _KERNEL_OPEN_FIRMWARE_DEVICES_H - -#include <SupportDefs.h> - -#ifdef __cplusplus -extern "C" { -#endif - -status_t of_get_next_device(int *_cookie, int root, const char *type, - char *path, size_t pathSize); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif /* _KERNEL_OPEN_FIRMWARE_DEVICES_H */ +/* + * Copyright 2005-2006, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. + * All rights reserved. Distributed under the terms of the MIT License. + */ + +#ifndef _KERNEL_OPEN_FIRMWARE_DEVICES_H +#define _KERNEL_OPEN_FIRMWARE_DEVICES_H + +#include <SupportDefs.h> + +#ifdef __cplusplus +extern "C" { +#endif + +status_t of_get_next_device(int *_cookie, int root, const char *type, + char *path, size_t pathSize); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif /* _KERNEL_OPEN_FIRMWARE_DEVICES_H */ Modified: haiku/trunk/src/system/boot/loader/FileMapDisk.cpp =================================================================== --- haiku/trunk/src/system/boot/loader/FileMapDisk.cpp 2010-06-26 17:35:16 UTC (rev 37264) +++ haiku/trunk/src/system/boot/loader/FileMapDisk.cpp 2010-06-26 17:38:03 UTC (rev 37265) @@ -1,189 +1,189 @@ -/* - * Copyright 2005, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. - * All rights reserved. Distributed under the terms of the MIT License. - */ - -#include <boot/FileMapDisk.h> -#include <boot_item.h> - -#include <new> - -#include <endian.h> -#include <stdio.h> -#include <string.h> - -#include <OS.h> -#include <SupportDefs.h> - - -//#define TRACE_FILEMAPDISK -#ifdef TRACE_FILEMAPDISK -# define TRACE(x) dprintf x -#else -# define TRACE(x) ; -#endif - -// constructor -FileMapDisk::FileMapDisk() -{ -} - -// destructor -FileMapDisk::~FileMapDisk() -{ -} - -// Init -status_t -FileMapDisk::Init(Node *node/*, Partition *partition, FileMap *map, off_t imageSize*/) -{ - TRACE(("FileMapDisk::FileMapDisk(%p)\n", node)); - fNode = node; - /* - fPartition = partition; - fMap = map; - fImageSize = imageSize; - - // create and bind socket - fSocket = new(nothrow) UDPSocket; - if (!fSocket) - return B_NO_MEMORY; - - status_t error = fSocket->Bind(INADDR_ANY, 6666); - if (error != B_OK) - return error; - */ - - return B_OK; -} - - -status_t -FileMapDisk::Open(void **_cookie, int mode) -{ - TRACE(("FileMapDisk::Open(, 0x%08x)\n", mode)); - if (!fNode) - return B_NO_INIT; - - return fNode->Open(_cookie, mode); -} - - -status_t -FileMapDisk::Close(void *cookie) -{ - TRACE(("FileMapDisk::Close(%p)\n", cookie)); - if (!fNode) - return B_NO_INIT; - - return fNode->Close(cookie); -} - - -// ReadAt -ssize_t -FileMapDisk::ReadAt(void *cookie, off_t pos, void *_buffer, - size_t bufferSize) -{ - TRACE(("FileMapDisk::ReadAt(%p, %lld, , %ld)\n", cookie, pos, bufferSize)); - if (!fNode) - return B_NO_INIT; - - return fNode->ReadAt(cookie, pos, _buffer, bufferSize); -} - - -// WriteAt -ssize_t -FileMapDisk::WriteAt(void */*cookie*/, off_t pos, const void *buffer, - size_t bufferSize) -{ - // Not needed in the boot loader. - return B_PERMISSION_DENIED; -} - -// GetName -status_t -FileMapDisk::GetName(char *nameBuffer, size_t bufferSize) const -{ - const char *prefix = "FileMapDisk:"; - if (!nameBuffer) - return B_BAD_VALUE; - - snprintf(nameBuffer, bufferSize, prefix); - if (bufferSize > strlen(prefix) && fNode) - return fNode->GetName(nameBuffer + strlen(prefix), - bufferSize - strlen(prefix)); - - return B_OK; -} - - -status_t -FileMapDisk::GetFileMap(struct file_map_run *runs, int32 *count) -{ - return fNode->GetFileMap(runs, count); -} - - -off_t -FileMapDisk::Size() const -{ - if (!fNode) - return B_NO_INIT; - return fNode->Size(); -} - - -FileMapDisk * -FileMapDisk::FindAnyFileMapDisk(Directory *volume) -{ - TRACE(("FileMapDisk::FindAnyFileMapDisk(%p)\n", volume)); - Node *node; - status_t error; - - if (!volume) - return NULL; - - //XXX: check lower/mixed case as well - Node *dirnode; - Directory *dir; - dirnode = volume->Lookup(FMAP_FOLDER_NAME, true); - if (!dirnode || !S_ISDIR(dirnode->Type())) - return NULL; - dir = (Directory *)dirnode; - node = dir->Lookup(FMAP_IMAGE_NAME, true); - if (!node) - return NULL; - - // create a FileMapDisk object - FileMapDisk *disk = new(nothrow) FileMapDisk; - if (disk) { - error = disk->Init(node); - if (error != B_OK) { - delete disk; - disk = NULL; - } - } - - return disk; -} - - -status_t -FileMapDisk::RegisterFileMapBootItem() -{ - return B_ERROR; - struct file_map_boot_item *item; - item = (struct file_map_boot_item *)malloc(sizeof(struct file_map_boot_item)); - item->num_runs = FMAP_MAX_RUNS; - status_t err; - err = GetFileMap(item->runs, &item->num_runs); - if (err < B_OK) - return err; -// err = add_boot_item("file_map_disk", item, sizeof(struct file_map_boot_item)); - err = B_ERROR; - return err; -} - - +/* + * Copyright 2005, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. + * All rights reserved. Distributed under the terms of the MIT License. + */ + +#include <boot/FileMapDisk.h> +#include <boot_item.h> + +#include <new> + +#include <endian.h> +#include <stdio.h> +#include <string.h> + +#include <OS.h> +#include <SupportDefs.h> + + +//#define TRACE_FILEMAPDISK +#ifdef TRACE_FILEMAPDISK +# define TRACE(x) dprintf x +#else +# define TRACE(x) ; +#endif + +// constructor +FileMapDisk::FileMapDisk() +{ +} + +// destructor +FileMapDisk::~FileMapDisk() +{ +} + +// Init +status_t +FileMapDisk::Init(Node *node/*, Partition *partition, FileMap *map, off_t imageSize*/) +{ + TRACE(("FileMapDisk::FileMapDisk(%p)\n", node)); + fNode = node; + /* + fPartition = partition; + fMap = map; + fImageSize = imageSize; + + // create and bind socket + fSocket = new(nothrow) UDPSocket; + if (!fSocket) + return B_NO_MEMORY; + + status_t error = fSocket->Bind(INADDR_ANY, 6666); + if (error != B_OK) + return error; + */ + + return B_OK; +} + + +status_t +FileMapDisk::Open(void **_cookie, int mode) +{ + TRACE(("FileMapDisk::Open(, 0x%08x)\n", mode)); + if (!fNode) + return B_NO_INIT; + + return fNode->Open(_cookie, mode); +} + + +status_t +FileMapDisk::Close(void *cookie) +{ + TRACE(("FileMapDisk::Close(%p)\n", cookie)); + if (!fNode) + return B_NO_INIT; + + return fNode->Close(cookie); +} + + +// ReadAt +ssize_t +FileMapDisk::ReadAt(void *cookie, off_t pos, void *_buffer, + size_t bufferSize) +{ + TRACE(("FileMapDisk::ReadAt(%p, %lld, , %ld)\n", cookie, pos, bufferSize)); + if (!fNode) + return B_NO_INIT; + + return fNode->ReadAt(cookie, pos, _buffer, bufferSize); +} + + +// WriteAt +ssize_t +FileMapDisk::WriteAt(void */*cookie*/, off_t pos, const void *buffer, + size_t bufferSize) +{ + // Not needed in the boot loader. + return B_PERMISSION_DENIED; +} + +// GetName +status_t +FileMapDisk::GetName(char *nameBuffer, size_t bufferSize) const +{ + const char *prefix = "FileMapDisk:"; + if (!nameBuffer) + return B_BAD_VALUE; + + snprintf(nameBuffer, bufferSize, prefix); + if (bufferSize > strlen(prefix) && fNode) + return fNode->GetName(nameBuffer + strlen(prefix), + bufferSize - strlen(prefix)); + + return B_OK; +} + + +status_t +FileMapDisk::GetFileMap(struct file_map_run *runs, int32 *count) +{ + return fNode->GetFileMap(runs, count); +} + + +off_t +FileMapDisk::Size() const +{ + if (!fNode) + return B_NO_INIT; + return fNode->Size(); +} + + +FileMapDisk * +FileMapDisk::FindAnyFileMapDisk(Directory *volume) +{ + TRACE(("FileMapDisk::FindAnyFileMapDisk(%p)\n", volume)); + Node *node; + status_t error; + + if (!volume) + return NULL; + + //XXX: check lower/mixed case as well + Node *dirnode; + Directory *dir; + dirnode = volume->Lookup(FMAP_FOLDER_NAME, true); + if (!dirnode || !S_ISDIR(dirnode->Type())) + return NULL; + dir = (Directory *)dirnode; + node = dir->Lookup(FMAP_IMAGE_NAME, true); + if (!node) + return NULL; + + // create a FileMapDisk object + FileMapDisk *disk = new(nothrow) FileMapDisk; + if (disk) { + error = disk->Init(node); + if (error != B_OK) { + delete disk; + disk = NULL; + } + } + + return disk; +} + + +status_t +FileMapDisk::RegisterFileMapBootItem() +{ + return B_ERROR; + struct file_map_boot_item *item; + item = (struct file_map_boot_item *)malloc(sizeof(struct file_map_boot_item)); + item->num_runs = FMAP_MAX_RUNS; + status_t err; + err = GetFileMap(item->runs, &item->num_runs); + if (err < B_OK) + return err; +// err = add_boot_item("file_map_disk", item, sizeof(struct file_map_boot_item)); + err = B_ERROR; + return err; +} + + Modified: haiku/trunk/src/system/boot/loader/net/RemoteDisk.cpp =================================================================== --- haiku/trunk/src/system/boot/loader/net/RemoteDisk.cpp 2010-06-26 17:35:16 UTC (rev 37264) +++ haiku/trunk/src/system/boot/loader/net/RemoteDisk.cpp 2010-06-26 17:38:03 UTC (rev 37265) @@ -1,313 +1,313 @@ -/* - * Copyright 2005, Ingo Weinhold <bonefish@xxxxxxxxxxxxxxx>. - * All rights reserved. Distributed under the terms of the MIT License. - */ - -#include <boot/net/RemoteDisk.h> - -#include <new> - -#include <endian.h> -#include <stdio.h> - -#include <OS.h> -#include <SupportDefs.h> - -#include <boot/net/UDP.h> - - -static const bigtime_t kRequestTimeout = 100000LL; - -#if __BYTE_ORDER == __LITTLE_ENDIAN - -static inline -uint64_t swap_uint64(uint64_t data) -{ - return ((data & 0xff) << 56) - | ((data & 0xff00) << 40) - | ((data & 0xff0000) << 24) - | ((data & 0xff000000) << 8) - | ((data >> 8) & 0xff000000) - | ((data >> 24) & 0xff0000) - | ((data >> 40) & 0xff00) - | ((data >> 56) & 0xff); -} - -#define host_to_net64(data) swap_uint64(data) -#define net_to_host64(data) swap_uint64(data) - -#endif - -#if __BYTE_ORDER == __BIG_ENDIAN -#define host_to_net64(data) (data) -#define net_to_host64(data) (data) -#endif - -#undef htonll -#undef ntohll -#define htonll(data) host_to_net64(data) -#define ntohll(data) net_to_host64(data) - - -// constructor -RemoteDisk::RemoteDisk() - : fServerAddress(INADDR_ANY), - fServerPort(0), - fImageSize(0), - fRequestID(0), - fSocket(NULL), - fPacket(NULL) -{ -} - -// destructor -RemoteDisk::~RemoteDisk() -{ - delete fSocket; - delete fPacket; -} - -// Init -status_t -RemoteDisk::Init(ip_addr_t serverAddress, uint16 serverPort, off_t imageSize) -{ - fServerAddress = serverAddress; - fServerPort = serverPort; - fImageSize = imageSize; - - // create and bind socket - fSocket = new(nothrow) UDPSocket; - if (!fSocket) - return B_NO_MEMORY; - - status_t error = fSocket->Bind(INADDR_ANY, 6666); - if (error != B_OK) - return error; - - return B_OK; [... truncated: 1430 lines follow ...]