git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixing vsnprintf behavior on 64-bit systems
[tpg/acess2.git]
/
Kernel
/
drv
/
proc.c
diff --git
a/Kernel/drv/proc.c
b/Kernel/drv/proc.c
index
9aa0a34
..
cf19a66
100644
(file)
--- a/
Kernel/drv/proc.c
+++ b/
Kernel/drv/proc.c
@@
-3,7
+3,7
@@
* - Kernel Status Driver
*/
#define DEBUG 1
* - Kernel Status Driver
*/
#define DEBUG 1
-#include <
common
.h>
+#include <
acess
.h>
#include <modules.h>
#include <fs_devfs.h>
#include <fs_sysfs.h>
#include <modules.h>
#include <fs_devfs.h>
#include <fs_sysfs.h>
@@
-18,8
+18,8
@@
typedef struct sSysFS_Ent
struct sSysFS_Ent *Next;
struct sSysFS_Ent *ListNext;
struct sSysFS_Ent *Parent;
struct sSysFS_Ent *Next;
struct sSysFS_Ent *ListNext;
struct sSysFS_Ent *Parent;
- char *Name;
tVFS_Node Node;
tVFS_Node Node;
+ char Name[];
} tSysFS_Ent;
// === PROTOTYPES ===
} tSysFS_Ent;
// === PROTOTYPES ===
@@
-31,7
+31,7
@@
typedef struct sSysFS_Ent
int SysFS_RemoveFile(int ID);
char *SysFS_Comm_ReadDir(tVFS_Node *Node, int Id);
int SysFS_RemoveFile(int ID);
char *SysFS_Comm_ReadDir(tVFS_Node *Node, int Id);
-tVFS_Node *SysFS_Comm_FindDir(tVFS_Node *Node, char *Filename);
+tVFS_Node *SysFS_Comm_FindDir(tVFS_Node *Node, c
onst c
har *Filename);
Uint64 SysFS_Comm_ReadFile(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer);
void SysFS_Comm_CloseFile(tVFS_Node *Node);
Uint64 SysFS_Comm_ReadFile(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer);
void SysFS_Comm_CloseFile(tVFS_Node *Node);
@@
-42,7
+42,6
@@
MODULE_DEFINE(0, VERSION, SysFS, SysFS_Install, NULL, NULL);
tSysFS_Ent gSysFS_Version_Kernel = {
NULL, NULL, // Nexts
&gSysFS_Version, // Parent
tSysFS_Ent gSysFS_Version_Kernel = {
NULL, NULL, // Nexts
&gSysFS_Version, // Parent
- "Kernel",
{
.Inode = 1, // File #1
.ImplPtr = KERNEL_VERSION_STRING,
{
.Inode = 1, // File #1
.ImplPtr = KERNEL_VERSION_STRING,
@@
-51,12
+50,12
@@
tSysFS_Ent gSysFS_Version_Kernel = {
.NumACLs = 1,
.ACLs = &gVFS_ACL_EveryoneRO,
.Read = SysFS_Comm_ReadFile
.NumACLs = 1,
.ACLs = &gVFS_ACL_EveryoneRO,
.Read = SysFS_Comm_ReadFile
- }
+ },
+ "Kernel"
};
tSysFS_Ent gSysFS_Version = {
NULL, NULL,
&gSysFS_Root,
};
tSysFS_Ent gSysFS_Version = {
NULL, NULL,
&gSysFS_Root,
- "Version",
{
.Size = 1,
.ImplPtr = &gSysFS_Version_Kernel,
{
.Size = 1,
.ImplPtr = &gSysFS_Version_Kernel,
@@
-66,23
+65,19
@@
tSysFS_Ent gSysFS_Version = {
.Flags = VFS_FFLAG_DIRECTORY,
.ReadDir = SysFS_Comm_ReadDir,
.FindDir = SysFS_Comm_FindDir
.Flags = VFS_FFLAG_DIRECTORY,
.ReadDir = SysFS_Comm_ReadDir,
.FindDir = SysFS_Comm_FindDir
- }
+ },
+ "Version"
};
};
-// Root of the SysFS tree (just used
for clean code
)
+// Root of the SysFS tree (just used
to keep the code clean
)
tSysFS_Ent gSysFS_Root = {
NULL, NULL,
NULL,
tSysFS_Ent gSysFS_Root = {
NULL, NULL,
NULL,
- "/",
{
.Size = 1,
.ImplPtr = &gSysFS_Version,
.ImplInt = (Uint)&gSysFS_Root // Self-Link
{
.Size = 1,
.ImplPtr = &gSysFS_Version,
.ImplInt = (Uint)&gSysFS_Root // Self-Link
- // .NumACLs = 1,
- // .ACLs = &gVFS_ACL_EveryoneRX,
- // .Flags = VFS_FFLAG_DIRECTORY,
- // .ReadDir = SysFS_Comm_ReadDir,
- // .FindDir = SysFS_Comm_FindDir
- }
+ },
+ "/"
};
tDevFS_Driver gSysFS_DriverInfo = {
NULL, "system",
};
tDevFS_Driver gSysFS_DriverInfo = {
NULL, "system",
@@
-108,7
+103,7
@@
tSysFS_Ent *gSysFS_FileList;
int SysFS_Install(char **Options)
{
DevFS_AddDevice( &gSysFS_DriverInfo );
int SysFS_Install(char **Options)
{
DevFS_AddDevice( &gSysFS_DriverInfo );
- return
0
;
+ return
MODULE_ERR_OK
;
}
/**
}
/**
@@
-144,9
+139,8
@@
int SysFS_RegisterFile(char *Path, char *Data, int Length)
// Need a new directory?
if( !child )
{
// Need a new directory?
if( !child )
{
- child = calloc( 1, sizeof(tSysFS_Ent) );
+ child = calloc( 1, sizeof(tSysFS_Ent)
+tmp+1
);
child->Next = NULL;
child->Next = NULL;
- child->Name = malloc(tmp+1);
memcpy(child->Name, &Path[start], tmp);
child->Name[tmp] = '\0';
child->Parent = ent;
memcpy(child->Name, &Path[start], tmp);
child->Name[tmp] = '\0';
child->Parent = ent;
@@
-163,7
+157,7
@@
int SysFS_RegisterFile(char *Path, char *Data, int Length)
ent->Node.ImplPtr = child;
//else
// gSysFS_DriverInfo.RootNode.ImplPtr = child;
ent->Node.ImplPtr = child;
//else
// gSysFS_DriverInfo.RootNode.ImplPtr = child;
- // ^^^ Impossible (There is already /Version
+ // ^^^ Impossible (There is already /Version
)
}
else
prev->Next = child;
}
else
prev->Next = child;
@@
-171,7
+165,7
@@
int SysFS_RegisterFile(char *Path, char *Data, int Length)
ent->Node.Size ++;
else
gSysFS_DriverInfo.RootNode.Size ++;
ent->Node.Size ++;
else
gSysFS_DriverInfo.RootNode.Size ++;
- L
OG("Added directory '%s'\n
", child->Name);
+ L
og_Log("SysFS", "Added directory '%s'
", child->Name);
}
ent = child;
}
ent = child;
@@
-194,14
+188,14
@@
int SysFS_RegisterFile(char *Path, char *Data, int Length)
break;
}
if( child ) {
break;
}
if( child ) {
-
Warning("[SYSFS]
'%s' is taken (in '%s')\n", &Path[start], Path);
+
Log_Warning("SysFS", "
'%s' is taken (in '%s')\n", &Path[start], Path);
return 0;
}
// Create new node
return 0;
}
// Create new node
- child = calloc( 1, sizeof(tSysFS_Ent) );
+ child = calloc( 1, sizeof(tSysFS_Ent)
+strlen(&Path[start])+1
);
child->Next = NULL;
child->Next = NULL;
-
child->Name = strdup(
&Path[start]);
+
strcpy(child->Name,
&Path[start]);
child->Parent = ent;
child->Node.Inode = giSysFS_NextFileID++;
child->Parent = ent;
child->Node.Inode = giSysFS_NextFileID++;
@@
-228,7
+222,7
@@
int SysFS_RegisterFile(char *Path, char *Data, int Length)
child->ListNext = gSysFS_FileList;
gSysFS_FileList = child;
child->ListNext = gSysFS_FileList;
gSysFS_FileList = child;
- Log
("[SYSFS]
Added '%s' (%p)", Path, Data);
+ Log
_Log("SysFS", "
Added '%s' (%p)", Path, Data);
return child->Node.Inode;
}
return child->Node.Inode;
}
@@
-297,7
+291,7
@@
int SysFS_RemoveFile(int ID)
if( ent == file ) break;
}
if(!ent) {
if( ent == file ) break;
}
if(!ent) {
-
Warning("[SYSFS]
Bookkeeping Error: File in list, but not in directory");
+
Log_Warning("SysFS", "
Bookkeeping Error: File in list, but not in directory");
return 0;
}
return 0;
}
@@
-328,10
+322,10
@@
char *SysFS_Comm_ReadDir(tVFS_Node *Node, int Pos)
}
/**
}
/**
- * \fn tVFS_Node *SysFS_Comm_FindDir(tVFS_Node *Node, char *Filename)
+ * \fn tVFS_Node *SysFS_Comm_FindDir(tVFS_Node *Node, c
onst c
har *Filename)
* \brief Find a file in a SysFS directory
*/
* \brief Find a file in a SysFS directory
*/
-tVFS_Node *SysFS_Comm_FindDir(tVFS_Node *Node, char *Filename)
+tVFS_Node *SysFS_Comm_FindDir(tVFS_Node *Node, c
onst c
har *Filename)
{
tSysFS_Ent *child = (tSysFS_Ent*)Node->ImplPtr;
{
tSysFS_Ent *child = (tSysFS_Ent*)Node->ImplPtr;
UCC
git Repository :: git.ucc.asn.au