Skip to content

Instantly share code, notes, and snippets.

View pdumais's full-sized avatar

Patrick Dumais pdumais

View GitHub Profile
#include "macros.h"
#include "vmx.h"
#include "../memorymap.h"
#define VMWRITE(A,B) mov B,%rbx; mov A,%rax; vmwrite %rbx,%rax
#define VMREAD(A) mov A,%rbx; vmread %rbx,%rax
.global init_hypervisor
.global create_vm
#include "bgp.h"
#include <stdlib.h>
#include <string.h>
#define FSM_IDLE 0
#define FSM_CONNECT 1
#define FSM_ACTIVE 2
#define FSM_OPENSENT 3
#define FSM_OPENCONFIRM 4
#define FSM_ESTABLISHED 5
@pdumais
pdumais / hashtable.c
Created March 18, 2016 22:39
hash table
extern void memclear64(void* dst, uint64_t size);
extern void rwlockWriteLock(uint64_t*);
extern void rwlockWriteUnlock(uint64_t*);
extern void rwlockReadLock(uint64_t*);
extern void rwlockReadUnlock(uint64_t*);
uint64_t andhash(hashtable* ht, uint64_t keysize, uint64_t* key)
{
uint64_t mask = ((1<<ht->keysize)-1);
uint64_t k = 0;
@pdumais
pdumais / sha256.s
Last active December 17, 2015 00:07
sha256 implementation using AVX instructions
.globl sha256s
.equ LOCAL_VAR_SIZE, 8
.equ VAR_TRAIL, -8
.text
// WARNING: This is using System-V Calling convention. I don't know if it will work in windows
// extern "C" void sha256s(unsigned char* output, unsigned char* input, unsigned long size);
// rsi: input
@pdumais
pdumais / rtl8139.c
Created September 28, 2015 00:47
rtl8139 bare metal netcard driver
#include "../memorymap.h"
#include "display.h"
#include "utils.h"
#include "netcard.h"
#define RX_BUFFER_SIZE 8192
extern unsigned int pci_getBar(unsigned int dev,unsigned char bar);
extern unsigned short pci_getIRQ(unsigned int dev);
extern void pci_enableBusMastering(unsigned int dev);
@pdumais
pdumais / Makefile
Last active September 28, 2015 00:43
ARM bare-metal test.
SOURCES=init.S
TARGET=os
BINDIR=bin/
AS=arm-unknown-linux-gnueabi-gcc
LD=arm-unknown-linux-gnueabi-ld
CC=arm-unknown-linux-gnueabi-cc
OBJDUMP=arm-unknown-linux-gnueabi-objdump
OBJCOPY=arm-unknown-linux-gnueabi-objcopy
OBJECTS=$(SOURCES:%.S=$(BINDIR)%.o)
@pdumais
pdumais / MPSCRingBuffer.cpp
Created September 28, 2015 00:36
Thread safe multi-producer/single-consumer queue
#pragma once
typedef unsigned int uint32_t;
// Multi-Producer, Single-Consumer, lock-free ring buffer
template
struct MPSCRingBufferItem
{
T item;
bool valid;
@pdumais
pdumais / ata.c
Created September 28, 2015 00:32
ata driver
void atahandler(unsigned short base, unsigned char channel)
{
unsigned char val;
INPORTB(val,base+7);
if (val&1)
{
INPORTB(val,base+1);
pf("ERROR! %x\r\n",val);
}
else if (pendingRequest[channel].pending)
@pdumais
pdumais / jssipexample.html
Created September 28, 2015 00:04
jssipexample usage
<script type="text/javascript" src="jssip-0.6.21.js" />
<script>
var userId = "webclient";
var domain = "dumaisnet.ca";
var config = {
'ws_servers': 'wss://www.dumaisnet.ca/pbxws',
'uri': "sip:"+userId+"@"+domain,
'display_name': "web phone",
'authorization_user': userId,
'password': 'somepassword'