Skip to content

Commit

Permalink
Merge pull request #5 from apposed/schmarrn
Browse files Browse the repository at this point in the history
SharedMemory and NDArray implementation
  • Loading branch information
ctrueden authored Aug 10, 2024
2 parents 9a0c7bf + 5aa52d4 commit 76c0218
Show file tree
Hide file tree
Showing 29 changed files with 2,235 additions and 2,845 deletions.
2 changes: 1 addition & 1 deletion LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright (c) 2023, Appose developers.
Copyright (c) 2023 - 2024, Appose developers.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
Expand Down
16 changes: 14 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

<groupId>org.apposed</groupId>
<artifactId>appose</artifactId>
<version>0.1.1-SNAPSHOT</version>
<version>0.2.0-SNAPSHOT</version>

<name>Appose</name>
<description>Appose: multi-language interprocess cooperation with shared memory.</description>
Expand Down Expand Up @@ -46,7 +46,19 @@
</developers>
<contributors>
<contributor>
<name>None</name>
<name>Tobias Pietzsch</name>
<url>https://github.com/tpietzsch</url>
<properties><id>tpietzsch</id></properties>
</contributor>
<contributor>
<name>Carlos Garcia Lopez de Haro</name>
<url>https://github.com/carlosuc3m</url>
<properties><id>carlosuc3m</id></properties>
</contributor>
<contributor>
<name>Mark Kittisopikul</name>
<url>https://github.com/mkitti</url>
<properties><id>mkitti</id></properties>
</contributor>
</contributors>

Expand Down
95 changes: 95 additions & 0 deletions src/main/c/ShmCreate.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
/*-
* #%L
* Appose: multi-language interprocess cooperation with shared memory.
* %%
* Copyright (C) 2023 - 2024 Appose developers.
* %%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
* #L%
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <sys/stat.h>

// Function to get the size of a shared memory segment given its file descriptor
long get_shared_memory_size(int fd) {
struct stat shm_stat;
if (fstat(fd, &shm_stat) == -1) {
perror("fstat");
return -1;
}
return (long)shm_stat.st_size;
}

// Function to create a shared memory segment, modified to accept a long for size
int create_shared_memory(const char *name, long size) {
int fd = shm_open(name, O_CREAT | O_RDWR, 0666);
if (fd < 0) {
perror("shm_open");
return -1;
}
long already_size = get_shared_memory_size(fd);
if (already_size > 0) {
return fd;
}

if (ftruncate(fd, size) == -1) {
perror("ftruncate");
close(fd);
return -1;
}

return fd;
}

// Function to unlink a shared memory segment
void unlink_shared_memory(const char *name) {
if (shm_unlink(name) == -1) {
perror("shm_unlink");
}
}

int main() {
const char *shm_name = "/myshm";
size_t shm_size = 1024;

// Create shared memory
int shm_fd = create_shared_memory(shm_name, shm_size);
if (shm_fd < 0) {
exit(EXIT_FAILURE);
}

// Perform operations with shared memory here
// ...

// Close the shared memory file descriptor
close(shm_fd);

// Unlink shared memory
unlink_shared_memory(shm_name);

return 0;
}

2 changes: 1 addition & 1 deletion src/main/java/org/apposed/appose/Appose.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* #%L
* Appose: multi-language interprocess cooperation with shared memory.
* %%
* Copyright (C) 2023 Appose developers.
* Copyright (C) 2023 - 2024 Appose developers.
* %%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/apposed/appose/Builder.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* #%L
* Appose: multi-language interprocess cooperation with shared memory.
* %%
* Copyright (C) 2023 Appose developers.
* Copyright (C) 2023 - 2024 Appose developers.
* %%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/apposed/appose/Environment.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* #%L
* Appose: multi-language interprocess cooperation with shared memory.
* %%
* Copyright (C) 2023 Appose developers.
* Copyright (C) 2023 - 2024 Appose developers.
* %%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/apposed/appose/FilePaths.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* #%L
* Appose: multi-language interprocess cooperation with shared memory.
* %%
* Copyright (C) 2023 Appose developers.
* Copyright (C) 2023 - 2024 Appose developers.
* %%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/apposed/appose/GroovyWorker.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* #%L
* Appose: multi-language interprocess cooperation with shared memory.
* %%
* Copyright (C) 2023 Appose developers.
* Copyright (C) 2023 - 2024 Appose developers.
* %%
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
Expand Down
Loading

0 comments on commit 76c0218

Please sign in to comment.